transmit example for LMIC_MOTE_L152RC

Dependencies:   lmic_MOTE_L152RC mbed-src

Committer:
dudmuck
Date:
Tue Jun 02 19:12:38 2015 +0000
Revision:
1:1ff358d55507
Parent:
0:cf8cd2f1ab24
use changed library name for LMIC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudmuck 0:cf8cd2f1ab24 1 //#if 0
dudmuck 0:cf8cd2f1ab24 2 /*******************************************************************************
dudmuck 0:cf8cd2f1ab24 3 * Copyright (c) 2014-2015 IBM Corporation.
dudmuck 0:cf8cd2f1ab24 4 * All rights reserved. This program and the accompanying materials
dudmuck 0:cf8cd2f1ab24 5 * are made available under the terms of the Eclipse Public License v1.0
dudmuck 0:cf8cd2f1ab24 6 * which accompanies this distribution, and is available at
dudmuck 0:cf8cd2f1ab24 7 * http://www.eclipse.org/legal/epl-v10.html
dudmuck 0:cf8cd2f1ab24 8 *
dudmuck 0:cf8cd2f1ab24 9 * Contributors:
dudmuck 0:cf8cd2f1ab24 10 * IBM Zurich Research Lab - initial API, implementation and documentation
dudmuck 0:cf8cd2f1ab24 11 *******************************************************************************/
dudmuck 0:cf8cd2f1ab24 12
dudmuck 0:cf8cd2f1ab24 13 #include "lmic.h"
dudmuck 0:cf8cd2f1ab24 14 #include "debug.h"
dudmuck 0:cf8cd2f1ab24 15
dudmuck 0:cf8cd2f1ab24 16 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 17 // CONFIGURATION (FOR APPLICATION CALLBACKS BELOW)
dudmuck 0:cf8cd2f1ab24 18 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 19
dudmuck 0:cf8cd2f1ab24 20 // application router ID (LSBF)
dudmuck 0:cf8cd2f1ab24 21 static const u1_t APPEUI[8] = { 0x01, 0x00, 0x01, 0x00, 0x00, 0x0c, 0x25, 0x00 };
dudmuck 0:cf8cd2f1ab24 22
dudmuck 0:cf8cd2f1ab24 23 // unique device ID (LSBF)
dudmuck 0:cf8cd2f1ab24 24 static const u1_t DEVEUI[8] = { 0x0f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x25, 0x00 };
dudmuck 0:cf8cd2f1ab24 25
dudmuck 0:cf8cd2f1ab24 26 // device-specific AES key (derived from device EUI)
dudmuck 0:cf8cd2f1ab24 27 static const u1_t DEVKEY[16] = { 0xe4, 0x72, 0x71, 0xc5, 0xf5, 0x30, 0xa9, 0x9f, 0xcf, 0xc4, 0x0e, 0xab, 0xea, 0xd7, 0x19, 0x42, };
dudmuck 0:cf8cd2f1ab24 28 // E4 -72 -71 -C5 -F5 -30 -A9 -9F -CF -C4 -0E -AB -EA -D7 -19 -42
dudmuck 0:cf8cd2f1ab24 29
dudmuck 0:cf8cd2f1ab24 30 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 31 // APPLICATION CALLBACKS
dudmuck 0:cf8cd2f1ab24 32 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 33
dudmuck 0:cf8cd2f1ab24 34 // provide application router ID (8 bytes, LSBF)
dudmuck 0:cf8cd2f1ab24 35 void os_getArtEui (u1_t* buf) {
dudmuck 0:cf8cd2f1ab24 36 memcpy(buf, APPEUI, 8);
dudmuck 0:cf8cd2f1ab24 37 }
dudmuck 0:cf8cd2f1ab24 38
dudmuck 0:cf8cd2f1ab24 39 // provide device ID (8 bytes, LSBF)
dudmuck 0:cf8cd2f1ab24 40 void os_getDevEui (u1_t* buf) {
dudmuck 0:cf8cd2f1ab24 41 memcpy(buf, DEVEUI, 8);
dudmuck 0:cf8cd2f1ab24 42 }
dudmuck 0:cf8cd2f1ab24 43
dudmuck 0:cf8cd2f1ab24 44 // provide device key (16 bytes)
dudmuck 0:cf8cd2f1ab24 45 void os_getDevKey (u1_t* buf) {
dudmuck 0:cf8cd2f1ab24 46 memcpy(buf, DEVKEY, 16);
dudmuck 0:cf8cd2f1ab24 47 }
dudmuck 0:cf8cd2f1ab24 48
dudmuck 0:cf8cd2f1ab24 49
dudmuck 0:cf8cd2f1ab24 50 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 51 // MAIN - INITIALIZATION AND STARTUP
dudmuck 0:cf8cd2f1ab24 52 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 53
dudmuck 0:cf8cd2f1ab24 54 // initial job
dudmuck 0:cf8cd2f1ab24 55 static void initfunc (osjob_t* j) {
dudmuck 0:cf8cd2f1ab24 56 // reset MAC state
dudmuck 0:cf8cd2f1ab24 57 LMIC_reset();
dudmuck 0:cf8cd2f1ab24 58 // start joining
dudmuck 0:cf8cd2f1ab24 59 LMIC_startJoining();
dudmuck 0:cf8cd2f1ab24 60 // init done - onEvent() callback will be invoked...
dudmuck 0:cf8cd2f1ab24 61 }
dudmuck 0:cf8cd2f1ab24 62
dudmuck 0:cf8cd2f1ab24 63
dudmuck 0:cf8cd2f1ab24 64 // application entry point
dudmuck 0:cf8cd2f1ab24 65 int main () {
dudmuck 0:cf8cd2f1ab24 66 osjob_t initjob;
dudmuck 0:cf8cd2f1ab24 67
dudmuck 0:cf8cd2f1ab24 68 // initialize runtime env
dudmuck 0:cf8cd2f1ab24 69 os_init();
dudmuck 0:cf8cd2f1ab24 70 // initialize debug library
dudmuck 0:cf8cd2f1ab24 71 debug_init();
dudmuck 0:cf8cd2f1ab24 72 // setup initial job
dudmuck 0:cf8cd2f1ab24 73 os_setCallback(&initjob, initfunc);
dudmuck 0:cf8cd2f1ab24 74 // execute scheduled jobs and events
dudmuck 0:cf8cd2f1ab24 75 os_runloop();
dudmuck 0:cf8cd2f1ab24 76 // (not reached)
dudmuck 0:cf8cd2f1ab24 77 return 0;
dudmuck 0:cf8cd2f1ab24 78 }
dudmuck 0:cf8cd2f1ab24 79
dudmuck 0:cf8cd2f1ab24 80
dudmuck 0:cf8cd2f1ab24 81 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 82 // LMIC EVENT CALLBACK
dudmuck 0:cf8cd2f1ab24 83 //////////////////////////////////////////////////
dudmuck 0:cf8cd2f1ab24 84
dudmuck 0:cf8cd2f1ab24 85 void onEvent (ev_t ev) {
dudmuck 0:cf8cd2f1ab24 86 debug_event(ev);
dudmuck 0:cf8cd2f1ab24 87
dudmuck 0:cf8cd2f1ab24 88 switch(ev) {
dudmuck 0:cf8cd2f1ab24 89
dudmuck 0:cf8cd2f1ab24 90 // network joined, session established
dudmuck 0:cf8cd2f1ab24 91 case EV_JOINED:
dudmuck 0:cf8cd2f1ab24 92 debug_val("netid = ", LMIC.netid);
dudmuck 0:cf8cd2f1ab24 93 goto tx;
dudmuck 0:cf8cd2f1ab24 94
dudmuck 0:cf8cd2f1ab24 95 // scheduled data sent (optionally data received)
dudmuck 0:cf8cd2f1ab24 96 case EV_TXCOMPLETE:
dudmuck 0:cf8cd2f1ab24 97 if(LMIC.dataLen) { // data received in rx slot after tx
dudmuck 0:cf8cd2f1ab24 98 debug_buf(LMIC.frame+LMIC.dataBeg, LMIC.dataLen);
dudmuck 0:cf8cd2f1ab24 99 }
dudmuck 0:cf8cd2f1ab24 100 tx:
dudmuck 0:cf8cd2f1ab24 101 // immediately prepare next transmission
dudmuck 0:cf8cd2f1ab24 102 LMIC.frame[0] = LMIC.snr;
dudmuck 0:cf8cd2f1ab24 103 // schedule transmission (port 1, datalen 1, no ack requested)
dudmuck 0:cf8cd2f1ab24 104 LMIC_setTxData2(1, LMIC.frame, 1, 0);
dudmuck 0:cf8cd2f1ab24 105 // (will be sent as soon as duty cycle permits)
dudmuck 0:cf8cd2f1ab24 106 break;
dudmuck 0:cf8cd2f1ab24 107 }
dudmuck 0:cf8cd2f1ab24 108 }
dudmuck 0:cf8cd2f1ab24 109 //#endif /* #if 0 */