122 lines
2.4 KiB
C
122 lines
2.4 KiB
C
//#include <proc/p32mx440f256h.h>
|
|
|
|
#include "E220Module.h"
|
|
#include "BoardCfg.h"
|
|
#include "timer.h"
|
|
#include "Uart.h"
|
|
#include "ProtocolDefs.h"
|
|
|
|
|
|
int InitLoraModule()
|
|
{
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int SetLoraModuleTxMode()
|
|
{
|
|
LORA_MODULE_M0_PIN = 1;
|
|
LORA_MODULE_M1_PIN = 1;
|
|
return RET_OK;
|
|
}
|
|
|
|
int SetLoraModuleConfigMode()
|
|
{
|
|
LORA_MODULE_M0_PIN = 0;
|
|
LORA_MODULE_M1_PIN = 0;
|
|
return RET_OK;
|
|
}
|
|
|
|
int ReadLoraModuleConfig()
|
|
{
|
|
char Cmd[3]={0xC1,0x00,E220_CONFIG_SIZE};
|
|
SetLoraModuleConfigMode();
|
|
Sleep(100);
|
|
SendInternalUartDataBlocking(Cmd,3,LORA_MODULE_UART_PORT);
|
|
return RET_OK;
|
|
}
|
|
|
|
int ReadLoraModuleRSSI()
|
|
{
|
|
char Cmd[6]={0xC0,0xC1,0xC2,0xC3,0x00,0x02};
|
|
Sleep(100);
|
|
SendInternalUartDataBlocking(Cmd,6,LORA_MODULE_UART_PORT);
|
|
return RET_OK;
|
|
}
|
|
|
|
int AnalyzeLoraModuleConfigData(char *Data, int size)
|
|
{
|
|
char header = Data[0];
|
|
if(header != (char)0xC1)
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
unsigned char StartAddress = Data[1];
|
|
unsigned char DataLength = Data[2];
|
|
|
|
if(DataLength != E220_CONFIG_SIZE)
|
|
{
|
|
//This function must be use to analyze all registers.
|
|
return RET_ERROR;
|
|
}
|
|
|
|
mModuleInternalAddress = Data[3];
|
|
mModuleInternalAddress <<= 8;
|
|
mModuleInternalAddress |= Data[4];
|
|
|
|
unsigned char Byte2 = Data[5];
|
|
mModuleAirRate = Byte2 & E220_AIR_RATE_MASK;
|
|
Byte2 >>= 3;
|
|
|
|
mModuleUARTParity = Byte2 & E220_UART_PARITY_MASK;
|
|
Byte2 >>= 2;
|
|
|
|
mModuleUARTRate = Byte2 & E220_UART_RATE_MASK;
|
|
|
|
|
|
unsigned char Byte3 = Data[6];
|
|
mModuleTxPower = Byte3 & E220_TX_POWER_MASK;
|
|
Byte3 >>= 5; //Bit 4,3,2 are reserved
|
|
|
|
mModuleRSSIEnabled = Byte3 & 0x01;
|
|
Byte3 >>= 1;
|
|
|
|
mModuleSubPacket = Byte3 & E220_PACKET_SIZE_MASK;
|
|
|
|
|
|
mModuleInternalChannel = Data[7];
|
|
|
|
unsigned char Byte5 = Data[8];
|
|
mModuleWORCycle = Byte5 & E220_WOR_CYCLE_MASK;
|
|
Byte5 >>= 4; //Bit 3 is reserved
|
|
|
|
mModuleLBTEnabled = Byte5 & 0x01;
|
|
Byte5 >>= 2; //Bit 5 is reserved
|
|
|
|
mModuleTxMethod = Byte5 & 0x01;
|
|
Byte5 >>= 1;
|
|
|
|
mModuleRSSIByteEnabled = Byte5 & 0x01;
|
|
|
|
|
|
return RET_OK;
|
|
|
|
}
|
|
|
|
int AnalyzeLoraModuleRSSI(char *Data, int size)
|
|
{
|
|
char header = Data[0];
|
|
if(header != (char)0xC1)
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
char StartAddress = Data[1];
|
|
char Size = Data[2];
|
|
|
|
mModuleAmbientRSSI = Data[3];
|
|
if(Size == (char)2)
|
|
{
|
|
mModuleLastRxRSSI = Data[4];
|
|
}
|
|
}
|