// Copyright (c) 2018 Brandenburg Tech, LLC // All right reserved. // // THIS SOFTWARE IS PROVIDED BY BRANDENBURG TECH, LLC AND CONTRIBUTORS // ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A // PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BRANDENBURT TECH, LLC // AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Copyright (c) 2007,2008,2009,2010,2011,2012,2013, 2014 AXSEM AG // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1.Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2.Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3.Neither the name of AXSEM AG, Duebendorf nor the // names of its contributors may be used to endorse or promote products // derived from this software without specific prior written permission. // 4.All advertising materials mentioning features or use of this software // must display the following acknowledgement: // This product includes software developed by AXSEM AG and its contributors. // 5.The usage of this source code is only granted for operation with AX5043 // and AX8052F143. Porting to other radio or communication devices is // strictly prohibited. // // THIS SOFTWARE IS PROVIDED BY AXSEM AG AND CONTRIBUTORS ``AS IS'' AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL AXSEM AG AND CONTRIBUTORS BE LIABLE FOR ANY // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include #include #include #include #include #include #include #include int main(void) { uint8_t retVal; setSpiChannel(SPI_CHANNEL); setSpiSpeed(SPI_SPEED); initializeSpi(); retVal = axradio_init(); if (retVal == AXRADIO_ERR_NOCHIP) { fprintf(stderr, "ERROR: No AX5043 RF chip found\n"); exit(EXIT_FAILURE); } if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to initialize AX5043\n"); exit(EXIT_FAILURE); } printf("INFO: Found and initialized AX5043\n"); uint16_t pkt_counter = 0; int32_t current_freq = 0; for (;;) { static uint8_t demo_packet_[sizeof(demo_packet)]; if ((pkt_counter / 10) % 2) { if (current_freq != 445300000) { current_freq = 445300000; printf("Setting frequency to 445300000\n"); retVal= axradio_setfreq(445300000); if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to enter TX mode\n"); exit(EXIT_FAILURE); } retVal = mode_tx(); if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to enter TX mode\n"); exit(EXIT_FAILURE); } } } else if (current_freq != 435300000) { current_freq = 435300000; printf("Setting frequency to 435300000\n"); retVal = axradio_setfreq(435300000); if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to enter TX mode\n"); exit(EXIT_FAILURE); } retVal = mode_tx(); if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to enter TX mode\n"); exit(EXIT_FAILURE); } } ++pkt_counter; memcpy(demo_packet_, demo_packet, sizeof(demo_packet)); if (framing_insert_counter) { demo_packet_[framing_counter_pos] = (uint8_t)(pkt_counter & 0xFF); demo_packet_[framing_counter_pos+1] = (uint8_t)((pkt_counter>>8) & 0xFF); } printf("INFO: Sending another packet...\n"); retVal = transmit_packet(&remoteaddr_tx, demo_packet_, sizeof(demo_packet)); if (retVal != AXRADIO_ERR_NOERROR) { fprintf(stderr, "ERROR: Unable to transmit a packet\n"); exit(EXIT_FAILURE); } sleep(5); } return 0; }