125 lines
3.5 KiB
C
125 lines
3.5 KiB
C
#include "NetworkInterface.h"
|
|
#include "ProtocolDefs.h"
|
|
#include "NetworkProtocol.h"
|
|
#include "InternalUart.h"
|
|
#include "define.h"
|
|
#include "BoardCfg.h"
|
|
#include "Uart.h"
|
|
#include "SPI_Flash.h"
|
|
#include "FlashMapping.h"
|
|
#include "versionbuild.h"
|
|
#include "WiFiCtrl.h"
|
|
#include "LoraInterface.h"
|
|
//
|
|
|
|
//enum eWiFiState
|
|
//{
|
|
// WIFI_MODULE_OFF_STATE = 0,
|
|
// WIFI_CONNECTED_STATE,
|
|
// WIFI_DISCONNECTED_STATE,
|
|
// WIFI_INIT_ERROR_STATE,
|
|
// WIFI_UNKNOWN_STATE
|
|
//};
|
|
unsigned char mLoraPreamble[3]={0x00,LORA_MASTER_ADDRESS,LORA_CHANNEL};
|
|
|
|
static const char mFirmwareVersion[15] = VERSIONNUMBER;
|
|
unsigned int mTotalMasterNbRequests = 0;
|
|
|
|
void ExecuteMasterCommand(int Command, unsigned char *Data, int DataSize)
|
|
{
|
|
if(LoraInterfaceIsBusy() == 1)
|
|
return;
|
|
|
|
mTotalMasterNbRequests++;
|
|
switch(Command)
|
|
{
|
|
case LORA_IF_GET_STATUS_REQUEST:
|
|
{
|
|
char Payload[20];
|
|
|
|
char temp;
|
|
|
|
Payload[0] = LORA_MODULE_MODEL;
|
|
temp = (char)(mModuleInternalAddress & 0xFF);
|
|
Payload[2] = temp;
|
|
temp = (char)((mModuleInternalAddress >> 8) & 0xFF);
|
|
Payload[1] = temp;
|
|
Payload[3] = mModuleUARTParity;
|
|
Payload[4] = mModuleUARTRate;
|
|
Payload[5] = mModuleAirRate;
|
|
Payload[6] = mModuleSubPacket;
|
|
Payload[7] = mModuleRSSIEnabled;
|
|
Payload[8] = mModuleTxPower;
|
|
Payload[9] = mModuleInternalChannel;
|
|
Payload[10] = mModuleRSSIByteEnabled;
|
|
Payload[11] = mModuleTxMethod;
|
|
Payload[12] = mModuleLBTEnabled;
|
|
Payload[13] = mModuleWORCycle;
|
|
Payload[14] = mModuleAmbientRSSI;
|
|
Payload[15] = mModuleLastRxRSSI;
|
|
|
|
SendNetworkCommand(LORA_IF_GET_STATUS_RESPONSE,Payload,16);
|
|
break;
|
|
}
|
|
case LORA_IF_SEND_FRAME_REQUEST:
|
|
{
|
|
// //First 4 bytes of data are the payload size.
|
|
// int DataSize = 0;
|
|
// DataSize = (unsigned int)Data[0];
|
|
// DataSize <<= 8;
|
|
// DataSize |= (unsigned int)Data[1];
|
|
// DataSize <<= 8;
|
|
// DataSize |= (unsigned int)Data[2];
|
|
// DataSize <<= 8;
|
|
// DataSize |= (unsigned int)Data[3];
|
|
|
|
LoraInterfaceTransmitLoRaData(Data,DataSize);
|
|
|
|
break;
|
|
}
|
|
case LORA_IF_GET_MODULE_CONFIG_REQUEST:
|
|
{
|
|
break;
|
|
}
|
|
case LORA_IF_GET_RSSI_REQUEST:
|
|
{
|
|
break;
|
|
}
|
|
case LORA_IF_SET_MODULE_CONFIG_REQUEST:
|
|
{
|
|
break;
|
|
}
|
|
case LORA_IF_SET_MODULE_CONFIG_RESPONSE:
|
|
case LORA_IF_GET_RSSI_RESPONSE:
|
|
case LORA_IF_GET_MODULE_CONFIG_RESPONSE:
|
|
case LORA_IF_NEW_FRAME_RESPONSE:
|
|
case LORA_IF_SEND_FRAME_RESPONSE:
|
|
case LORA_IF_GET_STATUS_RESPONSE:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void SendNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize)
|
|
{
|
|
unsigned char *Payload;
|
|
unsigned int PayloadSize;
|
|
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_LORA_INTERFACE_DEVICE,Command,Data,DataSize,0,&PayloadSize);
|
|
|
|
UartTransmitData(NETWORK_UART_PORT,Payload,PayloadSize);
|
|
|
|
}
|
|
|
|
void SendNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize)
|
|
{
|
|
unsigned char *Payload;
|
|
unsigned int PayloadSize;
|
|
//unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize)
|
|
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_LORA_INTERFACE_DEVICE,Command,Data,DataSize,0,&PayloadSize);
|
|
|
|
SendInternalUartDataBlocking(Payload,PayloadSize,NETWORK_UART_PORT);
|
|
}
|
|
|