diff --git a/README.md b/README.md index 5daaa9f..a66c0f2 100755 --- a/README.md +++ b/README.md @@ -1,2 +1,23 @@ OpenModem ========== + +OpenModem is an open source firmware implementation of a AFSK modem supporting 300, 1200 and 2400 baud operation, suitable for communication over a wide variety of analogue mediums, both radio and wired. The firmware is designed for and compatible with [unsigned.io's OpenModem](https://unsigned.io/openmodem), but can be used on any similar build. + +Complete modems are available from [the unsigned.io shop](http://unsigned.io/shop), or can be build from scratch by referring to the schematics and documentation on the [OpenModem page](https://unsigned.io/openmodem) + +## A few highlights + +- 300, 1200 and 2400 baud operation +- Full KISS TNC compatibility +- Secure in-modem AES-128 encryption +- SD card support +- Packet logging in PCAP format (WireShark compatible) +- Digitally adjustable input and output gain control +- Easy to use graphical config utility +- Supports standard GPS and bluetooth modules +- Supports large packets, 576 byte MTU +- Very large in-modem packet queue + +## Usage + +Please refer to the manual and instructions posted at the [OpenModem page](https://unsigned.io/openmodem). The default serial connection settings are 115200 baud, 8N1. For configuring the modem, please see the OpenModem Config Utility. \ No newline at end of file diff --git a/device.h b/device.h index ab67164..049ad88 100755 --- a/device.h +++ b/device.h @@ -34,7 +34,7 @@ #define CONFIG_BENCHMARK_MODE false // CSMA Settings -#define CONFIG_FULL_DUPLEX false // TODO: Actually implement fdx +#define CONFIG_FULL_DUPLEX false #define CONFIG_CSMA_P_DEFAULT 255 #define CONFIG_CSMA_SLOTTIME_DEFAULT 20 @@ -42,7 +42,10 @@ #define AX25_MAX_FRAME_LEN 611 #define AX25_MAX_PAYLOAD 576 #define AX25_MIN_PAYLOAD 2 -#define AX25_ENCRYPTED_MIN_LENGTH 51 // Padding byte + IV + 1 Block + HMAC + CRC +#define AX25_ENCRYPTED_MIN_LENGTH 51 +// The minimum packet length of an AES-128 +// encrypted packet is equal to: +// padding byte + IV + 1 Block + HMAC + CRC // Packet settings #define CONFIG_PASSALL false diff --git a/hardware/AFSK.h b/hardware/AFSK.h index 5c2fb9c..5c82e2a 100755 --- a/hardware/AFSK.h +++ b/hardware/AFSK.h @@ -9,7 +9,6 @@ #include "util/FIFO.h" #include "protocol/HDLC.h" -// TODO: Optimise RAM by moving this to progmem #define SIN_LEN 512 static const uint8_t sine_table[] = { @@ -98,7 +97,7 @@ inline static uint8_t sinSample(uint16_t i) { #define PHASE_BITS 8 // Sub-sample phase counter resolution #endif -#define PHASE_INC 1 // Nudge by above resolution for each adjustment +#define PHASE_INC 1 // Nudge by above resolution for each adjustment #define PHASE_MAX (ADC_SAMPLESPERBIT * PHASE_BITS) // Size of our phase counter