diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.proto | 2 | ||||
-rw-r--r-- | src/ao-make-product.5c | 15 | ||||
-rw-r--r-- | src/ao.h | 3 | ||||
-rw-r--r-- | src/ao_packet_master.c | 2 | ||||
-rw-r--r-- | src/ao_packet_slave.c | 4 | ||||
-rw-r--r-- | src/ao_product.c | 2 | ||||
-rw-r--r-- | src/teledongle-v0.1/Makefile.defs | 1 | ||||
-rw-r--r-- | src/teledongle-v0.2/Makefile.defs | 1 | ||||
-rw-r--r-- | src/telemetrum-v0.1-sirf/Makefile.defs | 1 | ||||
-rw-r--r-- | src/telemetrum-v0.1-sky/Makefile.defs | 1 | ||||
-rw-r--r-- | src/telemetrum-v1.0/Makefile.defs | 1 | ||||
-rw-r--r-- | src/tidongle/Makefile.defs | 1 |
12 files changed, 30 insertions, 4 deletions
diff --git a/src/Makefile.proto b/src/Makefile.proto index 106333a6..eedb878a 100644 --- a/src/Makefile.proto +++ b/src/Makefile.proto @@ -214,7 +214,7 @@ all: ../$(PROG) nickle $< > $@ ao_product.h: ao-make-product.5c - $(call quiet,NICKLE,$<) $< -m altusmetrum.org -p $(PRODUCT) -v $(VERSION) > $@ + $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@ ao_product.rel: ao_product.c ao_product.h $(call quiet,CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $< diff --git a/src/ao-make-product.5c b/src/ao-make-product.5c index 933032dd..5f2eb8e8 100644 --- a/src/ao-make-product.5c +++ b/src/ao-make-product.5c @@ -37,11 +37,19 @@ write_int(int a, string description) printf ("#define AO_%s_NUMBER %d\n\n", description, a); } +void +write_hex(int a, string description) +{ + printf ("/* %s */\n", description); + printf ("#define AO_%s_NUMBER 0x%04x\n\n", description, a); +} + string manufacturer = "altusmetrum.org"; string product = "TeleMetrum"; string version = "0.0"; int serial = 1; int user_argind = 0; +int id_product = 0x000a; argdesc argd = { .args = { @@ -58,6 +66,12 @@ argdesc argd = { .expr_name = "prod", .desc = "Product name." }, { + .var = { .arg_int = &id_product }, + .abbr = 'i', + .name = "id_product", + .expr_name = "id_p", + .desc = "Product ID." }, + { .var = { .arg_int = &serial }, .abbr = 's', .name = "serial", @@ -82,6 +96,7 @@ main() write_ucs2(product, "iProduct"); write_ucs2(sprintf("%06d", serial), "iSerial"); write_int(serial, "iSerial"); + write_hex(id_product, "idProduct"); write_string(version, "iVersion"); } @@ -1034,7 +1034,7 @@ struct ao_fifo { * Packet-based command interface */ -#define AO_PACKET_MAX 8 +#define AO_PACKET_MAX 64 #define AO_PACKET_SYN (uint8_t) 0xff struct ao_packet { @@ -1043,6 +1043,7 @@ struct ao_packet { uint8_t seq; uint8_t ack; uint8_t d[AO_PACKET_MAX]; + uint8_t callsign[AO_MAX_CALLSIGN]; }; struct ao_packet_recv { diff --git a/src/ao_packet_master.c b/src/ao_packet_master.c index ef86fa28..72bb908a 100644 --- a/src/ao_packet_master.c +++ b/src/ao_packet_master.c @@ -77,12 +77,14 @@ ao_packet_master(void) { uint8_t status; + ao_config_get(); ao_radio_set_packet(); ao_tx_packet.addr = ao_serial_number; ao_tx_packet.len = AO_PACKET_SYN; ao_packet_master_time = ao_time(); ao_packet_master_delay = AO_PACKET_MASTER_DELAY_SHORT; while (ao_packet_enable) { + memcpy(ao_tx_packet.callsign, ao_config.callsign, AO_MAX_CALLSIGN); ao_packet_send(); if (ao_tx_packet.len) ao_packet_master_busy(); diff --git a/src/ao_packet_slave.c b/src/ao_packet_slave.c index e03ebdc3..9b78767f 100644 --- a/src/ao_packet_slave.c +++ b/src/ao_packet_slave.c @@ -27,8 +27,10 @@ ao_packet_slave(void) ao_tx_packet.len = AO_PACKET_SYN; while (ao_packet_enable) { status = ao_packet_recv(); - if (status & AO_DMA_DONE) + if (status & AO_DMA_DONE) { + memcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN); ao_packet_send(); + } } ao_exit(); } diff --git a/src/ao_product.c b/src/ao_product.c index b42e62c0..2bd0b59c 100644 --- a/src/ao_product.c +++ b/src/ao_product.c @@ -40,7 +40,7 @@ const uint8_t ao_usb_descriptors [] = 0x00, /* bDeviceProtocol */ AO_USB_CONTROL_SIZE, /* bMaxPacketSize */ LE_WORD(0xFFFE), /* idVendor */ - LE_WORD(0x000A), /* idProduct */ + LE_WORD(AO_idProduct_NUMBER), /* idProduct */ LE_WORD(0x0100), /* bcdDevice */ 0x01, /* iManufacturer */ 0x02, /* iProduct */ diff --git a/src/teledongle-v0.1/Makefile.defs b/src/teledongle-v0.1/Makefile.defs index 06559b28..be7741d8 100644 --- a/src/teledongle-v0.1/Makefile.defs +++ b/src/teledongle-v0.1/Makefile.defs @@ -6,3 +6,4 @@ SRC = \ PRODUCT=TeleDongle-v0.1 PRODUCT_DEF=-DTELEDONGLE_V_0_1 +IDPRODUCT=0x000c diff --git a/src/teledongle-v0.2/Makefile.defs b/src/teledongle-v0.2/Makefile.defs index 23694fda..cbec7805 100644 --- a/src/teledongle-v0.2/Makefile.defs +++ b/src/teledongle-v0.2/Makefile.defs @@ -6,3 +6,4 @@ SRC = \ PRODUCT=TeleDongle-v0.2 PRODUCT_DEF=-DTELEDONGLE_V_0_2 +IDPRODUCT=0x000c diff --git a/src/telemetrum-v0.1-sirf/Makefile.defs b/src/telemetrum-v0.1-sirf/Makefile.defs index 7306683e..2ce6e6ed 100644 --- a/src/telemetrum-v0.1-sirf/Makefile.defs +++ b/src/telemetrum-v0.1-sirf/Makefile.defs @@ -8,3 +8,4 @@ SRC = \ PRODUCT=TeleMetrum-v0.1-SiRF PRODUCT_DEF=-DTELEMETRUM_V_0_1 +IDPRODUCT=0x000b diff --git a/src/telemetrum-v0.1-sky/Makefile.defs b/src/telemetrum-v0.1-sky/Makefile.defs index df475baa..098ac547 100644 --- a/src/telemetrum-v0.1-sky/Makefile.defs +++ b/src/telemetrum-v0.1-sky/Makefile.defs @@ -8,3 +8,4 @@ SRC = \ PRODUCT=TeleMetrum-v0.1 PRODUCT_DEF=-DTELEMETRUM_V_0_1 +IDPRODUCT=0x000b diff --git a/src/telemetrum-v1.0/Makefile.defs b/src/telemetrum-v1.0/Makefile.defs index e3cc5eb2..624ce6e8 100644 --- a/src/telemetrum-v1.0/Makefile.defs +++ b/src/telemetrum-v1.0/Makefile.defs @@ -8,3 +8,4 @@ SRC = \ PRODUCT=TeleMetrum-v1.0 PRODUCT_DEF=-DTELEMETRUM_V_1_0 +IDPRODUCT=0x000b diff --git a/src/tidongle/Makefile.defs b/src/tidongle/Makefile.defs index 5b910b9b..fdd51732 100644 --- a/src/tidongle/Makefile.defs +++ b/src/tidongle/Makefile.defs @@ -6,3 +6,4 @@ SRC = \ PRODUCT=TIDongle PRODUCT_DEF=-DTIDONGLE +IDPRODUCT=0x000a |