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.c54
1 files changed, 36 insertions, 18 deletions
diff --git a/software/hhd70dongle/hhd70dongle.c b/software/hhd70dongle/hhd70dongle.c
index 3f7f344..4e5560d 100644
--- a/software/hhd70dongle/hhd70dongle.c
+++ b/software/hhd70dongle/hhd70dongle.c
@@ -30,8 +30,11 @@
*
*/
#include <avr/io.h>
+#include <avr/wdt.h>
#include <util/delay.h>
//#include <avr/stdio.h>
+#include <avr/interrupt.h>
+//#include <avr/power.h>
#include "led.h"
#include "util.h"
@@ -109,47 +112,60 @@ void EVENT_USB_Device_ControlRequest(void)
int main(void)
{
- CPU_PRESCALE(0);
+ MCUSR &= ~(1 << WDRF);
+ wdt_disable(); // FIXME: disable WatchDog for now, but use it later...
+ CPU_PRESCALE(0); //cpu_init
+
led_init();
- hhd70_init();
USB_Init();
+ hhd70_init();
DDRB &= ~(1<<DDB5); // set PB5/ADC12 to INPUT (c1101 temp sensor)
+ sei(); //set enable global interrupt
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"hhd70dongle ready");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"hhd70dongle ready\r\n");
_delay_ms(500);
c1101_init();
hhd70_palna_rxmode();
for(;;)
{
+ int16_t num_bytes_received = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
+ while(num_bytes_received > 0)
+ {
+ int16_t recv_byte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
+ num_bytes_received--;
+ if (recv_byte >= 0 && (char) recv_byte == 'r')
+ {
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "resetting\r\n");
+ reset();
+ }
+ }
+
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
- USB_USBTask();
-
+ USB_USBTask();
+
c1101_spi_strobe_command(SPIC1101_ADDR_SRX); // enter RX - Mode
_delay_ms(1000);
- /*
- usb_rawhid_recv(read_buffer,20);
- if (read_buffer[0] == 'r')
- reset();
- */
+
if (hhd70_rx_data_available() == 1)
{
led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH");
+ 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:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi:\r\n");
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,"c1101 tx bytes:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes:\r\n");
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,"c1101 rx bytes:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:\r\n");
debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
c1101_spi_dump_registers_to_usb();
@@ -161,22 +177,24 @@ int main(void)
write_buffer[5]=':';
adc_on();
_delay_ms(250);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101:");
+ 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:");
+ 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");
+ 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");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps\r\n");
c1101_transmitData((char*) write_buffer,14);
led_off();
}