diff options
author | Bernhard Tittelbach <xro@realraum.at> | 2012-06-22 00:25:03 +0000 |
---|---|---|
committer | Bernhard Tittelbach <xro@realraum.at> | 2012-06-22 00:25:03 +0000 |
commit | fb7380a3ee5d4a7325f3c7e8e485231957547426 (patch) | |
tree | 9d2fd878d36dc5bf025283af062516de83a8bab2 /software/hhd70dongle/hhd70dongle.c | |
parent | timing changed @ idm-test spi end (diff) |
ttyACM instead of usb_hid
git-svn-id: https://svn.spreadspace.org/mur.sat@544 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'software/hhd70dongle/hhd70dongle.c')
-rw-r--r-- | software/hhd70dongle/hhd70dongle.c | 101 |
1 files changed, 79 insertions, 22 deletions
diff --git a/software/hhd70dongle/hhd70dongle.c b/software/hhd70dongle/hhd70dongle.c index fd92527..3f7f344 100644 --- a/software/hhd70dongle/hhd70dongle.c +++ b/software/hhd70dongle/hhd70dongle.c @@ -37,11 +37,11 @@ #include "util.h" #include "hhd70.h" #include "c1101lib.h" -#include "usb_rawhid.h" + #define CPU_PRESCALE(n) do { CLKPR = 0x80; CLKPR = (n); } while(0) -uint8_t read_buffer[64]; // buffer for reading usb signals -uint8_t write_buffer[64]; // buffer for writing usb signals +char read_buffer[64]; // buffer for reading usb signals +char write_buffer[64]; // buffer for writing usb signals //TODOs: //* make adc work ? @@ -53,48 +53,105 @@ uint8_t write_buffer[64]; // buffer for writing usb signals // * safely save state in eeprom (2 memory regions, only use the one with the "written successfully bit" which is written last) // * what if c1101 resets spuriously and clears it's settings ? -> check peridically ? + +/* ###### ###### + LUFA Library + Copyright (C) Dean Camera, 2012. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ +//#include <LUFA/Drivers/Peripheral/SPI.h> +//#include <LUFA/Drivers/Misc/RingBuffer.h> +#include <LUFA/Drivers/USB/USB.h> +#include "lufa-descriptor-usbserial.h" + + /* Global I/O Buffers: */ +//static RingBuffer_t SPItoUSB_Buffer; +//static uint8_t SPItoUSB_Buffer_Data[8]; + +/** LUFA CDC Class driver interface configuration and state information. This structure is + * passed to all CDC Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ +USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = + { + .Config = + { + .ControlInterfaceNumber = 0, + + .DataINEndpointNumber = CDC_TX_EPNUM, + .DataINEndpointSize = CDC_TXRX_EPSIZE, + .DataINEndpointDoubleBank = false, + + .DataOUTEndpointNumber = CDC_RX_EPNUM, + .DataOUTEndpointSize = CDC_TXRX_EPSIZE, + .DataOUTEndpointDoubleBank = false, + + .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM, + .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, + .NotificationEndpointDoubleBank = false, + }, + }; + +void EVENT_USB_Device_ConfigurationChanged(void) +{ + CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); +} + +void EVENT_USB_Device_ControlRequest(void) +{ + CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); +} +/* ###### end LUFA CDC-ACM specific definitions ###### */ + + + int main(void) { CPU_PRESCALE(0); led_init(); hhd70_init(); - usb_init(); + USB_Init(); DDRB &= ~(1<<DDB5); // set PB5/ADC12 to INPUT (c1101 temp sensor) - while (!usb_configured()) /* wait */ ; - usb_rawhid_send((uint8_t*)"hhd70dongle ready",17); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"hhd70dongle ready"); _delay_ms(500); c1101_init(); hhd70_palna_rxmode(); for(;;) { + CDC_Device_USBTask(&VirtualSerial_CDC_Interface); + 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(); - usb_rawhid_send((uint8_t*)"RX: GDO2 pin HIGH",100); - usb_rawhid_send((uint8_t*)"c1101 rx bytes:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH"); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:"); debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES)); - usb_rawhid_send(write_buffer,255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer); c1101_recieveData(); led_off(); } - usb_rawhid_send((uint8_t*)"c1101 rssi:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi:"); debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RSSI)); - usb_rawhid_send(write_buffer,255); - usb_rawhid_send((uint8_t*)"c1101 tx bytes:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes:"); debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_TXBYTES)); - usb_rawhid_send(write_buffer,255); - usb_rawhid_send((uint8_t*)"c1101 rx bytes:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:"); debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES)); - usb_rawhid_send(write_buffer,255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer); c1101_spi_dump_registers_to_usb(); write_buffer[0]='T'; write_buffer[1]='e'; @@ -104,22 +161,22 @@ int main(void) write_buffer[5]=':'; adc_on(); _delay_ms(250); - usb_rawhid_send((uint8_t*)"temp c1101:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101:"); debug_sprint_int16hex(write_buffer+6, c1101_measureTemp()); - usb_rawhid_send(write_buffer+6,255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+6); _delay_ms(250); - usb_rawhid_send((uint8_t*)"temp atmega:",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp atmega:"); debug_sprint_int16hex(write_buffer+10, adc_read(ADCMUX_ADC12)); - usb_rawhid_send(write_buffer+10,255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+10); adc_off(); _delay_ms(250); led_on(); - usb_rawhid_send((uint8_t*)"TX Data: String",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: String"); c1101_transmitData("OE6EOF test mur.sat GFSK r:9k6 fdev:3mhz 1234567890123456789012345678901234567890 End of Test",93); led_off(); _delay_ms(100); led_on(); - usb_rawhid_send((uint8_t*)"TX Data: Temps",255); + CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps"); c1101_transmitData((char*) write_buffer,14); led_off(); } |