You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.8 KiB
115 lines
2.8 KiB
# python-ax25
|
|
|
|
Python AX.25 Module for Python3
|
|
|
|
## Introduction
|
|
|
|
This is a python module designed for Python3 to access AX.25 features. This module is a C extension that can access the AX.25 interface from the Linux kernel.
|
|
|
|
This C extension is inspired from pyax25 https://github.com/ha5di/pyax25
|
|
|
|
## Installing the Module
|
|
|
|
Clone the Git repository
|
|
|
|
```
|
|
$ git clone https://github.com/josefmtd/python-ax25
|
|
```
|
|
|
|
Install the module by running the install script inside the python-ax25 directory
|
|
|
|
```
|
|
$ cd python-ax25
|
|
# ./install.sh
|
|
```
|
|
|
|
## Module Functions
|
|
|
|
Before using any of the functions, make sure to load all the available ports using `config_load_ports()`
|
|
|
|
```
|
|
pythonax25.config_load_ports()
|
|
|
|
Returns = number of available ports (int)
|
|
```
|
|
|
|
To get the names of available ports, use the `config_get_first_port` and `config_get_next_port`
|
|
|
|
```
|
|
pythonax25.config_get_first_port()
|
|
|
|
Returns = name of first port (unicode string)
|
|
|
|
|
|
pythonax25.config_get_next_port(portname)
|
|
|
|
Returns = name of port after 'portname' (unicode string)
|
|
```
|
|
|
|
To retrieve further information for each available port, use these functions:
|
|
1. `config_get_port_name(device)`
|
|
2. `config_get_address(portname)`
|
|
3. `config_get_device(portname)`
|
|
4. `config_get_window(portname)`
|
|
5. `config_get_packet_length(portname)`
|
|
6. `config_get_baudrate(portname)`
|
|
7. `config_get_description(portname)`
|
|
|
|
To change the callsign from ASCII to network format and vice versa, use the functions `ascii_to_network(callsignascii)` and `network_to_ascii(callsignnetwork)`
|
|
|
|
```
|
|
pythonax25.ascii_to_network(callsignascii)
|
|
|
|
Returns = callsign in network format (byte literal string)
|
|
|
|
|
|
pythonax25.network_to_ascii(callsignnetwork)
|
|
|
|
Returns = callsign in ascii format (unicode string)
|
|
```
|
|
|
|
For receiving AX.25 packets, the packet socket is mostly used in C programs. Start a socket by using `packet_socket()` and begin receiving by using `packet_rx(fd, timeout)`
|
|
|
|
```
|
|
pythonax25.packet_socket()
|
|
|
|
Returns = file descriptor (int)
|
|
|
|
|
|
pythonax25.packet_rx(fd, timeout)
|
|
|
|
Returns = Protocol and Address (tuple of int and string) and packet (byte-literal string)
|
|
```
|
|
|
|
For sending APRS messages, the datagram socket is used. Socket is started by using `datagram_socket()`, bound to a port by using `datagram_bind(fd, srccall, portcall)` and send packets via `datagram_tx(fd, destcall, message)` or `datagram_tx(fd, destcall, digicall, message)`
|
|
|
|
```
|
|
pythonax25.datagram_socket()
|
|
|
|
Returns = file descriptor (int)
|
|
|
|
|
|
pythonax25.datagram_bind(fd, srccall, destcall)
|
|
|
|
Returns = result of bind (int)
|
|
|
|
|
|
pythonax25.datagram_tx(fd, destcall, message)
|
|
|
|
Returns = result of transmission (int)
|
|
|
|
|
|
pythonax25.datagram_tx_digi(fd, destcall, digicall, message)
|
|
|
|
Returns = result of transmission (int)
|
|
```
|
|
|
|
Closing socket is done by using `close_socket(fd)`
|
|
|
|
```
|
|
pythonax25.close_socket(fd)
|
|
|
|
Returns = result of close (int)
|
|
```
|
|
|
|
2020 - Josef Matondang
|
|
|