LoRa on Multitech with Semtech mote

Dependencies:   LoRaWAN-lib SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo_Multitech by Nagaraj Krishnamurthy

app/LoRaDeviceStateProc.h

Committer:
ubhat
Date:
2016-05-17
Revision:
0:69f2e28d12c1
Child:
5:6ffeac53b7cb

File content as of revision 0:69f2e28d12c1:

/*
 / _____)             _              | |
( (____  _____ ____ _| |_ _____  ____| |__
 \____ \| ___ |    (_   _) ___ |/ ___)  _ \
 _____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
    (C)2015 Semtech

Description: Process function calls from various Device states

License: Revised BSD License, see LICENSE.TXT file include in the project

Maintainer: Uttam Bhat
*/
#ifndef __LORA_DEVICE_STATE_H__
#define __LORA_DEVICE_STATE_H__

#include "Common.h"
#include "board.h"
#include "LoRaMac.h"
#include "LoRaEventProc.h"
#include "SerialDisplay.h"
#include "mbed.h"
#include "LoRaMacLayerService.h"

/*!
 * Strucure containing the Uplink status
 */
struct sLoRaMacUplinkStatus
{
    /*!
     * MCPS-Request type
     */
    Mcps_t Type;    
    uint8_t Acked;
    int8_t Datarate;
    uint16_t UplinkCounter;
    uint8_t Port;
    uint8_t *Buffer;
    uint8_t BufferSize;
    int8_t TxPower;
};

/*!
 * Strucure containing the Downlink status
 */
struct sLoRaMacDownlinkStatus
{
    int16_t Rssi;
    int8_t Snr;
    uint16_t DownlinkCounter;
    bool RxData;
    uint8_t Port;
    uint8_t *Buffer;
    uint8_t BufferSize;
    uint8_t RxSlot;
};

/*!
 * Device states
 */
enum eDevicState
{
    DEVICE_STATE_INIT,
    DEVICE_STATE_JOIN,
    DEVICE_STATE_SEND,
    DEVICE_STATE_CYCLE,
    DEVICE_STATE_SLEEP
};

extern sLoRaMacUplinkStatus LoRaMacUplinkStatus;

extern sLoRaMacDownlinkStatus LoRaMacDownlinkStatus;

extern eDevicState DeviceState;

/*!
 * \brief Initialize Device: Timer, MAC Services, MAC
 */
void DeviceInit( void );

/*!
 * \brief Device Join update
 */
void DeviceJoinUpdate( void );

/*!
 * \brief OTA: if device not joined, send JOIN REQUEST to network
 *      ABP: Request DevAddr if not already set
 */
void DeviceJoin( void );

/*!
 * \brief   Prepares the payload of the frame to be transmitted
 *
 * \param [IN] port application port corresponding to which payload is generated
 */
void PrepareTxFrame( uint8_t port );

/*!
 * \brief   Send the frame
 *
 */
bool SendFrame( void );

#endif // __LORA_DEVICE_STATE_H__