Compare commits
2 Commits
9907a27ab7
...
e23a0d01ae
| Author | SHA1 | Date | |
|---|---|---|---|
| e23a0d01ae | |||
| 626f33a15e |
@@ -478,7 +478,14 @@ const uint32_t gdwSx1276ChannelTbl[SX1276_CHANNEL_MAX]={
|
|||||||
CH10, CH11, CH12, CH13, CH14, CH15, CH16, CH17, CH18, CH19,
|
CH10, CH11, CH12, CH13, CH14, CH15, CH16, CH17, CH18, CH19,
|
||||||
CH20, CH21, CH22, CH23, CH24, CH25, CH26, CH27, CH28, CH29,
|
CH20, CH21, CH22, CH23, CH24, CH25, CH26, CH27, CH28, CH29,
|
||||||
CH30, CH31, CH32, CH33, CH34, CH35, CH36, CH37, CH38, CH39,
|
CH30, CH31, CH32, CH33, CH34, CH35, CH36, CH37, CH38, CH39,
|
||||||
CH40, CH41, CH42, CH43, CH44, CH45
|
CH40, CH41, CH42, CH43, CH44, CH45, CH46, CH47, CH48, CH49,
|
||||||
|
CH50, CH51, CH52, CH53, CH54, CH55, CH56, CH57, CH58, CH59,
|
||||||
|
CH60, CH61, CH62, CH63, CH64, CH65, CH66, CH67, CH68, CH69,
|
||||||
|
CH70, CH71, CH72, CH73, CH74, CH75, CH76, CH77, CH78, CH79,
|
||||||
|
CH80, CH81, CH82, CH83, CH84, CH85, CH86, CH87, CH88, CH89,
|
||||||
|
CH90, CH91, CH92, CH93, CH94, CH95, CH96, CH97, CH98, CH99,
|
||||||
|
CH100, CH101, CH102, CH103, CH104, CH105, CH106, CH107, CH108, CH109,
|
||||||
|
CH110, CH111, CH112, CH113, CH114, CH115, CH116, CH117, CH118, CH119
|
||||||
};
|
};
|
||||||
|
|
||||||
//LORAPT_CHANNEL
|
//LORAPT_CHANNEL
|
||||||
@@ -666,7 +673,7 @@ bool LoraSetRegPreamble(uint8_t RegPreamble)
|
|||||||
}
|
}
|
||||||
bool LoraSetFreqCent(uint32_t FreqCent)
|
bool LoraSetFreqCent(uint32_t FreqCent)
|
||||||
{
|
{
|
||||||
if(FreqCent < 470100000 || FreqCent > 492600000)
|
if(FreqCent < 433100000 || FreqCent > 492600000) //lora-wide: 433.1MHz~492.6MHz(与信道表匹配)
|
||||||
return false;
|
return false;
|
||||||
LoRaPara.dwFreqHz = FreqCent;
|
LoRaPara.dwFreqHz = FreqCent;
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -660,7 +660,7 @@ typedef enum{
|
|||||||
LORAPT_MAX
|
LORAPT_MAX
|
||||||
}Sx1276LoraParaType;
|
}Sx1276LoraParaType;
|
||||||
|
|
||||||
#define SX1276_CHANNEL_MAX 46
|
#define SX1276_CHANNEL_MAX 120
|
||||||
|
|
||||||
#define LORA_SPI_NSS_SET() SPI2_NSS_SET()
|
#define LORA_SPI_NSS_SET() SPI2_NSS_SET()
|
||||||
#define LORA_SPI_NSS_CLR() SPI2_NSS_CLR()
|
#define LORA_SPI_NSS_CLR() SPI2_NSS_CLR()
|
||||||
@@ -758,54 +758,128 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Lora频率:470100000ul + 500000*N, N=0~45, 共46个信道(470.1MHz~492.6MHz)
|
Lora频率:433100000ul + 500000*N, N=0~119, 共120个信道(433.1MHz~492.6MHz) [lora-wide宽频版]
|
||||||
*/
|
*/
|
||||||
#define CH0 (470100000ul + 0) //470.1MHz
|
#define CH0 (433100000ul + 0) //433.1MHz
|
||||||
#define CH1 (470100000ul + 500000)
|
#define CH1 (433100000ul + 500000)
|
||||||
#define CH2 (470100000ul + 1000000)
|
#define CH2 (433100000ul + 1000000)
|
||||||
#define CH3 (470100000ul + 1500000)
|
#define CH3 (433100000ul + 1500000)
|
||||||
#define CH4 (470100000ul + 2000000)
|
#define CH4 (433100000ul + 2000000)
|
||||||
#define CH5 (470100000ul + 2500000)
|
#define CH5 (433100000ul + 2500000)
|
||||||
#define CH6 (470100000ul + 3000000)
|
#define CH6 (433100000ul + 3000000)
|
||||||
#define CH7 (470100000ul + 3500000)
|
#define CH7 (433100000ul + 3500000)
|
||||||
#define CH8 (470100000ul + 4000000)
|
#define CH8 (433100000ul + 4000000)
|
||||||
#define CH9 (470100000ul + 4500000)
|
#define CH9 (433100000ul + 4500000)
|
||||||
#define CH10 (470100000ul + 5000000)
|
#define CH10 (433100000ul + 5000000)
|
||||||
#define CH11 (470100000ul + 5500000)
|
#define CH11 (433100000ul + 5500000)
|
||||||
#define CH12 (470100000ul + 6000000)
|
#define CH12 (433100000ul + 6000000)
|
||||||
#define CH13 (470100000ul + 6500000)
|
#define CH13 (433100000ul + 6500000)
|
||||||
#define CH14 (470100000ul + 7000000)
|
#define CH14 (433100000ul + 7000000)
|
||||||
#define CH15 (470100000ul + 7500000)
|
#define CH15 (433100000ul + 7500000)
|
||||||
#define CH16 (470100000ul + 8000000)
|
#define CH16 (433100000ul + 8000000)
|
||||||
#define CH17 (470100000ul + 8500000)
|
#define CH17 (433100000ul + 8500000)
|
||||||
#define CH18 (470100000ul + 9000000)
|
#define CH18 (433100000ul + 9000000)
|
||||||
#define CH19 (470100000ul + 9500000)
|
#define CH19 (433100000ul + 9500000)
|
||||||
#define CH20 (470100000ul + 10000000)
|
#define CH20 (433100000ul + 10000000)
|
||||||
#define CH21 (470100000ul + 10500000)
|
#define CH21 (433100000ul + 10500000)
|
||||||
#define CH22 (470100000ul + 11000000)
|
#define CH22 (433100000ul + 11000000)
|
||||||
#define CH23 (470100000ul + 11500000)
|
#define CH23 (433100000ul + 11500000)
|
||||||
#define CH24 (470100000ul + 12000000)
|
#define CH24 (433100000ul + 12000000)
|
||||||
#define CH25 (470100000ul + 12500000)
|
#define CH25 (433100000ul + 12500000)
|
||||||
#define CH26 (470100000ul + 13000000)
|
#define CH26 (433100000ul + 13000000)
|
||||||
#define CH27 (470100000ul + 13500000)
|
#define CH27 (433100000ul + 13500000)
|
||||||
#define CH28 (470100000ul + 14000000)
|
#define CH28 (433100000ul + 14000000)
|
||||||
#define CH29 (470100000ul + 14500000)
|
#define CH29 (433100000ul + 14500000)
|
||||||
#define CH30 (470100000ul + 15000000)
|
#define CH30 (433100000ul + 15000000)
|
||||||
#define CH31 (470100000ul + 15500000)
|
#define CH31 (433100000ul + 15500000)
|
||||||
#define CH32 (470100000ul + 16000000)
|
#define CH32 (433100000ul + 16000000)
|
||||||
#define CH33 (470100000ul + 16500000)
|
#define CH33 (433100000ul + 16500000)
|
||||||
#define CH34 (470100000ul + 17000000)
|
#define CH34 (433100000ul + 17000000)
|
||||||
#define CH35 (470100000ul + 17500000)
|
#define CH35 (433100000ul + 17500000)
|
||||||
#define CH36 (470100000ul + 18000000)
|
#define CH36 (433100000ul + 18000000)
|
||||||
#define CH37 (470100000ul + 18500000)
|
#define CH37 (433100000ul + 18500000)
|
||||||
#define CH38 (470100000ul + 19000000)
|
#define CH38 (433100000ul + 19000000)
|
||||||
#define CH39 (470100000ul + 19500000)
|
#define CH39 (433100000ul + 19500000)
|
||||||
#define CH40 (470100000ul + 20000000)
|
#define CH40 (433100000ul + 20000000)
|
||||||
#define CH41 (470100000ul + 20500000)
|
#define CH41 (433100000ul + 20500000)
|
||||||
#define CH42 (470100000ul + 21000000)
|
#define CH42 (433100000ul + 21000000)
|
||||||
#define CH43 (470100000ul + 21500000)
|
#define CH43 (433100000ul + 21500000)
|
||||||
#define CH44 (470100000ul + 22000000)
|
#define CH44 (433100000ul + 22000000)
|
||||||
#define CH45 (470100000ul + 22500000) //492.6MHz
|
#define CH45 (433100000ul + 22500000)
|
||||||
|
#define CH46 (433100000ul + 23000000)
|
||||||
|
#define CH47 (433100000ul + 23500000)
|
||||||
|
#define CH48 (433100000ul + 24000000)
|
||||||
|
#define CH49 (433100000ul + 24500000)
|
||||||
|
#define CH50 (433100000ul + 25000000)
|
||||||
|
#define CH51 (433100000ul + 25500000)
|
||||||
|
#define CH52 (433100000ul + 26000000)
|
||||||
|
#define CH53 (433100000ul + 26500000)
|
||||||
|
#define CH54 (433100000ul + 27000000)
|
||||||
|
#define CH55 (433100000ul + 27500000)
|
||||||
|
#define CH56 (433100000ul + 28000000)
|
||||||
|
#define CH57 (433100000ul + 28500000)
|
||||||
|
#define CH58 (433100000ul + 29000000)
|
||||||
|
#define CH59 (433100000ul + 29500000)
|
||||||
|
#define CH60 (433100000ul + 30000000)
|
||||||
|
#define CH61 (433100000ul + 30500000)
|
||||||
|
#define CH62 (433100000ul + 31000000)
|
||||||
|
#define CH63 (433100000ul + 31500000)
|
||||||
|
#define CH64 (433100000ul + 32000000)
|
||||||
|
#define CH65 (433100000ul + 32500000)
|
||||||
|
#define CH66 (433100000ul + 33000000)
|
||||||
|
#define CH67 (433100000ul + 33500000)
|
||||||
|
#define CH68 (433100000ul + 34000000)
|
||||||
|
#define CH69 (433100000ul + 34500000)
|
||||||
|
#define CH70 (433100000ul + 35000000)
|
||||||
|
#define CH71 (433100000ul + 35500000)
|
||||||
|
#define CH72 (433100000ul + 36000000)
|
||||||
|
#define CH73 (433100000ul + 36500000)
|
||||||
|
#define CH74 (433100000ul + 37000000)
|
||||||
|
#define CH75 (433100000ul + 37500000)
|
||||||
|
#define CH76 (433100000ul + 38000000)
|
||||||
|
#define CH77 (433100000ul + 38500000)
|
||||||
|
#define CH78 (433100000ul + 39000000)
|
||||||
|
#define CH79 (433100000ul + 39500000)
|
||||||
|
#define CH80 (433100000ul + 40000000)
|
||||||
|
#define CH81 (433100000ul + 40500000)
|
||||||
|
#define CH82 (433100000ul + 41000000)
|
||||||
|
#define CH83 (433100000ul + 41500000)
|
||||||
|
#define CH84 (433100000ul + 42000000)
|
||||||
|
#define CH85 (433100000ul + 42500000)
|
||||||
|
#define CH86 (433100000ul + 43000000)
|
||||||
|
#define CH87 (433100000ul + 43500000)
|
||||||
|
#define CH88 (433100000ul + 44000000)
|
||||||
|
#define CH89 (433100000ul + 44500000)
|
||||||
|
#define CH90 (433100000ul + 45000000)
|
||||||
|
#define CH91 (433100000ul + 45500000)
|
||||||
|
#define CH92 (433100000ul + 46000000)
|
||||||
|
#define CH93 (433100000ul + 46500000)
|
||||||
|
#define CH94 (433100000ul + 47000000)
|
||||||
|
#define CH95 (433100000ul + 47500000)
|
||||||
|
#define CH96 (433100000ul + 48000000)
|
||||||
|
#define CH97 (433100000ul + 48500000)
|
||||||
|
#define CH98 (433100000ul + 49000000)
|
||||||
|
#define CH99 (433100000ul + 49500000)
|
||||||
|
#define CH100 (433100000ul + 50000000)
|
||||||
|
#define CH101 (433100000ul + 50500000)
|
||||||
|
#define CH102 (433100000ul + 51000000)
|
||||||
|
#define CH103 (433100000ul + 51500000)
|
||||||
|
#define CH104 (433100000ul + 52000000)
|
||||||
|
#define CH105 (433100000ul + 52500000)
|
||||||
|
#define CH106 (433100000ul + 53000000)
|
||||||
|
#define CH107 (433100000ul + 53500000)
|
||||||
|
#define CH108 (433100000ul + 54000000)
|
||||||
|
#define CH109 (433100000ul + 54500000)
|
||||||
|
#define CH110 (433100000ul + 55000000)
|
||||||
|
#define CH111 (433100000ul + 55500000)
|
||||||
|
#define CH112 (433100000ul + 56000000)
|
||||||
|
#define CH113 (433100000ul + 56500000)
|
||||||
|
#define CH114 (433100000ul + 57000000)
|
||||||
|
#define CH115 (433100000ul + 57500000)
|
||||||
|
#define CH116 (433100000ul + 58000000)
|
||||||
|
#define CH117 (433100000ul + 58500000)
|
||||||
|
#define CH118 (433100000ul + 59000000)
|
||||||
|
#define CH119 (433100000ul + 59500000) //492.6MHz
|
||||||
|
|
||||||
/*Lora中心频率默认值(编译期用于频道表等)
|
/*Lora中心频率默认值(编译期用于频道表等)
|
||||||
实际运行频率由Boot参数区(BootPara_t.LoraFreq)配置, APP启动时覆盖ConfigPara.Lora.FreqCent*/
|
实际运行频率由Boot参数区(BootPara_t.LoraFreq)配置, APP启动时覆盖ConfigPara.Lora.FreqCent*/
|
||||||
|
|||||||
@@ -244,6 +244,63 @@ int CheckCommUnitExcl(GateWayPara GateWay, uint8_t *CommUnitMac)
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/*****************************************************************************************
|
||||||
|
* 函数名称: RegPayloadValid
|
||||||
|
* 功能描述: 注册请求payload合法性校验,拦截频偏串台误解调的乱码帧,避免乱码设备占用注册表
|
||||||
|
* 参 数: GateWay, 网关句柄
|
||||||
|
CUHeader, 注册帧头
|
||||||
|
PayLoad, 注册负载数据
|
||||||
|
* 返 回 值: 合法返回true, 非法返回false
|
||||||
|
*****************************************************************************************/
|
||||||
|
static bool RegPayloadValid(GateWayPara GateWay, CommUnitFrameHeader CUHeader, uint8_t *PayLoad)
|
||||||
|
{
|
||||||
|
uint8_t SensorN = PayLoad[0];
|
||||||
|
int i, j;
|
||||||
|
bool MacEmpty;
|
||||||
|
|
||||||
|
/*空注册无意义*/
|
||||||
|
if(SensorN == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*payload长度必须容纳N个传感器条目(每条目6字节)*/
|
||||||
|
if(CUHeader->PayloadLen < (uint16_t)(SensorN * 6 + 1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*通讯单元自身MAC不能为全0/全FF*/
|
||||||
|
MacEmpty = true;
|
||||||
|
for(i = 0; i < 6; i++) {
|
||||||
|
if(CUHeader->DevMac[i] != 0x00 && CUHeader->DevMac[i] != 0xFF) { MacEmpty = false; break; }
|
||||||
|
}
|
||||||
|
if(MacEmpty) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*注册帧GWMac若非空(全0/全FF视为未填)则必须与本网关匹配*/
|
||||||
|
MacEmpty = true;
|
||||||
|
for(i = 0; i < 6; i++) {
|
||||||
|
if(CUHeader->GWMac[i] != 0x00 && CUHeader->GWMac[i] != 0xFF) { MacEmpty = false; break; }
|
||||||
|
}
|
||||||
|
if(!MacEmpty && memcmp(CUHeader->GWMac, GateWay->ConfigPara.GwMac, 6) != 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*逐传感器: 类型必须在已知类型表内且非保留(数据长度>0), MAC非全0/全FF且不等于网关MAC*/
|
||||||
|
for(j = 0; j < SensorN; j++) {
|
||||||
|
uint16_t RegType = PayLoad[(j*6)+1] | (PayLoad[(j*6)+2] << 8);
|
||||||
|
if(RegType == 0x0000 || RegType >= sizeof(SensorTypeDataLen)/sizeof(SensorTypeDataLen[0])
|
||||||
|
|| SensorTypeDataLen[RegType] == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
MacEmpty = true;
|
||||||
|
for(i = 0; i < 6; i++) {
|
||||||
|
uint8_t mac = PayLoad[(j*6)+1+i];
|
||||||
|
if(mac != 0x00 && mac != 0xFF) { MacEmpty = false; break; }
|
||||||
|
}
|
||||||
|
if(MacEmpty || memcmp(&PayLoad[(j*6)+1], GateWay->ConfigPara.GwMac, 6) == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: CommUnitSendCmd
|
* 函数名称: CommUnitSendCmd
|
||||||
* 功能描述: 网关下发通讯单元指令函数
|
* 功能描述: 网关下发通讯单元指令函数
|
||||||
@@ -611,6 +668,12 @@ int CommUnitAnalyze(GateWayPara GateWay, uint8_t *rData, uint16_t rLen, SendData
|
|||||||
if(PayLoad[0] > SENSOR_NUM_MAX) {
|
if(PayLoad[0] > SENSOR_NUM_MAX) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/*串台防护: 校验注册payload合法性, 拦截频偏误解调的乱码帧*/
|
||||||
|
if(!RegPayloadValid(GateWay, CUHeader, PayLoad)) {
|
||||||
|
MAIN_DBG_LOG("\r\nReg rejected: invalid payload (cross-band interference?) Mac:%02X-%02X-%02X-%02X-%02X-%02X\r\n",
|
||||||
|
CUHeader->DevMac[0], CUHeader->DevMac[1], CUHeader->DevMac[2], CUHeader->DevMac[3], CUHeader->DevMac[4], CUHeader->DevMac[5]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// if(CUHeader->PayloadLen < 2)
|
// if(CUHeader->PayloadLen < 2)
|
||||||
// return -1;
|
// return -1;
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ void GateWayInit(void)
|
|||||||
}
|
}
|
||||||
if(LoraSetFreqCent(GateWay.ConfigPara.Lora.FreqCent) == false)
|
if(LoraSetFreqCent(GateWay.ConfigPara.Lora.FreqCent) == false)
|
||||||
{
|
{
|
||||||
GateWay.ConfigPara.Lora.FreqCent = 470100000;
|
GateWay.ConfigPara.Lora.FreqCent = 433100000; //lora-wide: 回退到CH0
|
||||||
LoraSetFreqCent(GateWay.ConfigPara.Lora.FreqCent);
|
LoraSetFreqCent(GateWay.ConfigPara.Lora.FreqCent);
|
||||||
}
|
}
|
||||||
if(LoraSetPower(GateWay.ConfigPara.Lora.ucPower) == false) {
|
if(LoraSetPower(GateWay.ConfigPara.Lora.ucPower) == false) {
|
||||||
|
|||||||
Reference in New Issue
Block a user