diff options
author | Bernhard Tittelbach <xro@realraum.at> | 2012-05-19 00:32:43 +0000 |
---|---|---|
committer | Bernhard Tittelbach <xro@realraum.at> | 2012-05-19 00:32:43 +0000 |
commit | cbd3c39dc4a119a65c0aae047504b6c69ed08215 (patch) | |
tree | c0df4006059865f2145b6535e82de773c86aceef /software/hhd70dongle/c1101lib.c | |
parent | experimental 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.c | 28 |
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 |