summaryrefslogtreecommitdiff
path: root/software/hhd70dongle/c1101lib.c
diff options
context:
space:
mode:
authorBernhard Tittelbach <xro@realraum.at>2012-05-19 00:32:43 +0000
committerBernhard Tittelbach <xro@realraum.at>2012-05-19 00:32:43 +0000
commitcbd3c39dc4a119a65c0aae047504b6c69ed08215 (patch)
treec0df4006059865f2145b6535e82de773c86aceef /software/hhd70dongle/c1101lib.c
parentexperimental settings 437.5 mhz ax.25 compatible 9k6 gfsk (diff)
TX test
git-svn-id: https://svn.spreadspace.org/mur.sat@430 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'software/hhd70dongle/c1101lib.c')
-rw-r--r--software/hhd70dongle/c1101lib.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/software/hhd70dongle/c1101lib.c b/software/hhd70dongle/c1101lib.c
index 3ccd86b..60a3b4d 100644
--- a/software/hhd70dongle/c1101lib.c
+++ b/software/hhd70dongle/c1101lib.c
@@ -299,13 +299,33 @@ char c1101_getStatus(void)
}
-//max len: 64 bytes
-void c1101_writeTXFifo(char *buffer, unsigned int len)
+void c1101_transmitData(char *buffer, unsigned int len)
{
//check TXBYTES.NUM_TXBYTES
// never write more bytes than avaiblabe or doom ensues
-
-
+ uint8_t num_written = 0;
+ uint8_t mcsm1 = spi_c1101_read_register(SPIC1101_ADDR_MCSM1);
+ //configure state machine to automatically go to IDLE, once packet was transmitted
+ mcsm1 = (mcsm1 & 0b11111100) | 0b00;
+ spi_c1101_write_register(SPIC1101_ADDR_MCSM1, 0x18);
+ //fill buffer
+ do
+ {
+ num_written = spi_c1101_write_txfifo(buffer, len);
+ buffer += num_written;
+ len -= num_written;
+ } while (num_written > 0);
+ //start transmitting
+ spi_c1101_strobe_command(SPIC1101_ADDR_STX);
+ //keep buffer filled
+ do
+ {
+ num_written = spi_c1101_write_txfifo(buffer, len);
+ buffer += num_written;
+ len -= num_written;
+ if (num_written == 0 && len > 0)
+ _delay_ms(1);
+ } while (len > 0);
}
//max returned: 64 bytes