summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.proto2
-rw-r--r--src/ao-make-product.5c15
-rw-r--r--src/ao.h3
-rw-r--r--src/ao_packet_master.c2
-rw-r--r--src/ao_packet_slave.c4
-rw-r--r--src/ao_product.c2
-rw-r--r--src/teledongle-v0.1/Makefile.defs1
-rw-r--r--src/teledongle-v0.2/Makefile.defs1
-rw-r--r--src/telemetrum-v0.1-sirf/Makefile.defs1
-rw-r--r--src/telemetrum-v0.1-sky/Makefile.defs1
-rw-r--r--src/telemetrum-v1.0/Makefile.defs1
-rw-r--r--src/tidongle/Makefile.defs1
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");
}
diff --git a/src/ao.h b/src/ao.h
index 5dd756da..5f2b8339 100644
--- a/src/ao.h
+++ b/src/ao.h
@@ -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