summaryrefslogtreecommitdiff
path: root/software/hhd70dongle/hhd70dongle.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/hhd70dongle/hhd70dongle.c')
-rw-r--r--software/hhd70dongle/hhd70dongle.c197
1 files changed, 127 insertions, 70 deletions
diff --git a/software/hhd70dongle/hhd70dongle.c b/software/hhd70dongle/hhd70dongle.c
index 7e5b0ed..b6e8eeb 100644
--- a/software/hhd70dongle/hhd70dongle.c
+++ b/software/hhd70dongle/hhd70dongle.c
@@ -32,7 +32,7 @@
#include <avr/io.h>
#include <avr/wdt.h>
#include <util/delay.h>
-//#include <avr/stdio.h>
+#include <stdio.h>
#include <avr/interrupt.h>
//#include <avr/power.h>
@@ -99,12 +99,12 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
void EVENT_USB_Device_ConfigurationChanged(void)
{
- CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+ CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
}
void EVENT_USB_Device_ControlRequest(void)
{
- CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
+ CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
}
/* ###### end LUFA CDC-ACM specific definitions ###### */
@@ -127,6 +127,12 @@ int main(void)
_delay_ms(500);
c1101_init();
hhd70_palna_rxmode();
+
+ bool enable_tx_part=true;
+ bool enable_rx_part=true;
+ int8_t fdev_m = 1;
+ int8_t fdev_e = 1;
+
for(;;)
{
int16_t num_bytes_received = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
@@ -134,86 +140,137 @@ int main(void)
{
int16_t recv_byte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
num_bytes_received--;
- if (recv_byte >= 0 && (char) recv_byte == 'r')
+ if (recv_byte < 0)
+ continue;
+ if ((char) recv_byte == '!')
{
CDC_Device_SendString(&VirtualSerial_CDC_Interface, "resetting\r\n");
+ wdt_enable(WDTO_500MS);
reset();
}
+ else if ((char) recv_byte == 'E')
+ {
+ enable_rx_part = !enable_rx_part;
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "RX-Part now ");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, ((enable_rx_part)? "Enabled": "Disabled") );
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "\r\n");
+ }
+ else if ((char) recv_byte == 'S')
+ {
+ enable_tx_part = !enable_tx_part;
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "TX-Part now ");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, ((enable_tx_part)? "Enabled": "Disabled") );
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "\r\n");
+ }
+ else if ((char) recv_byte == 'R')
+ c1101_spi_dump_registers_to_usb();
+ else if ((char) recv_byte == 'D' || (char) recv_byte == 'd')
+ {
+ sprintf(write_buffer,"Freq Deviation Now: %u0 Hz\r\n", c1101_setFSKDeviationFromCarrier(fdev_m, fdev_e));
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, write_buffer);
+ if ((char) recv_byte == 'd')
+ {
+ fdev_m--;
+ if (fdev_m < 0)
+ {
+ fdev_e = (fdev_e - 1) % 8;
+ if (fdev_e < 0)
+ fdev_e = 7;
+ fdev_m = 7;
+ }
+ fdev_m %= 8;
+ }
+ else
+ {
+ fdev_m++;
+ if (fdev_m > 7)
+ fdev_e = (fdev_e + 1) % 8;
+ fdev_m %= 8;
+ }
+ }
}
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
USB_USBTask();
- c1101_spi_strobe_command(SPIC1101_ADDR_SRX); // enter RX - Mode
- _delay_ms(1000);
-
- if (hhd70_rx_data_available())
+ if (enable_rx_part)
{
- led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH\r\n");
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:");
- debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES));
+
+ c1101_spi_strobe_command(SPIC1101_ADDR_SRX); // enter RX - Mode
+ _delay_ms(1000);
+
+ if (hhd70_rx_data_available())
+ {
+ led_on();
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH\r\n");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:");
+ debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES));
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+ c1101_recieveData();
+ led_off();
+ }
+
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi: ");
+ debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RSSI));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
- c1101_recieveData();
- led_off();
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes: ");
+ debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_TXBYTES));
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes: ");
+ int16_t num_rx_bytes = c1101_spi_read_register(SPIC1101_ADDR_RXBYTES);
+ debug_sprint_int16hex(write_buffer, num_rx_bytes);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+
+
+ //~ if (num_rx_bytes > 0)
+ //~ {
+ //~ led_on();
+ //~ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX Buffer Non-Empty\r\n");
+ //~ c1101_recieveData();
+ //~ led_off();
+ //~ }
+
+// CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 status byte: ");
+// debug_sprint_int16hex(write_buffer, c1101_getStatus());
+// CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
+// CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+
}
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi: ");
- debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RSSI));
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes: ");
- debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_TXBYTES));
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes: ");
- int16_t num_rx_bytes = c1101_spi_read_register(SPIC1101_ADDR_RXBYTES);
- debug_sprint_int16hex(write_buffer, num_rx_bytes);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
-
- //~ if (num_rx_bytes > 0)
- //~ {
- //~ led_on();
- //~ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX Buffer Non-Empty\r\n");
- //~ c1101_recieveData();
- //~ led_off();
- //~ }
-
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 status byte: ");
- debug_sprint_int16hex(write_buffer, c1101_getStatus());
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
-
- //~ c1101_spi_dump_registers_to_usb();
- write_buffer[0]='T';
- write_buffer[1]='e';
- write_buffer[2]='m';
- write_buffer[3]='p';
- write_buffer[4]='s';
- write_buffer[5]=':';
- adc_on();
- _delay_ms(250);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101: ");
- debug_sprint_int16hex(write_buffer+6, c1101_measureTemp());
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+6);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
- _delay_ms(250);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp atmega: ");
- debug_sprint_int16hex(write_buffer+10, adc_read(ADCMUX_ADC12));
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+10);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
- adc_off();
- _delay_ms(250);
- led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: String\r\n");
- c1101_transmitData("OE6EOF test mur.sat GFSK r:9k6 fdev:3mhz 1234567890123456789012345678901234567890 End of Test",93);
- led_off();
- _delay_ms(100);
- led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps\r\n");
- c1101_transmitData((char*) write_buffer,14);
- led_off();
+ if (enable_tx_part)
+ {
+ write_buffer[0]='T';
+ write_buffer[1]='e';
+ write_buffer[2]='m';
+ write_buffer[3]='p';
+ write_buffer[4]='s';
+ write_buffer[5]=':';
+ adc_on();
+ _delay_ms(250);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101: ");
+ debug_sprint_int16hex(write_buffer+6, c1101_measureTemp());
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+6);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+ _delay_ms(250);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp atmega: ");
+ debug_sprint_int16hex(write_buffer+10, adc_read(ADCMUX_ADC12));
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+10);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
+ adc_off();
+ _delay_ms(250);
+ led_on();
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: String\r\n");
+ c1101_transmitData("OE6EOF test mur.sat GFSK r:9k6 fdev:11kHz 1234567890123456789012345678901234567890 End of Test",93);
+ led_off();
+ _delay_ms(100);
+ led_on();
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps\r\n");
+ c1101_transmitData((char*) write_buffer,14);
+ led_off();
+ }
}
}