kopia lustrzana https://github.com/PiInTheSky/lora-gateway
V1.8.12 - Null Uplink
rodzic
605eb3bb96
commit
4ee4530705
|
@ -224,6 +224,13 @@ Many thanks to David Brooke for coding this feature and the AFC.
|
|||
Change History
|
||||
==============
|
||||
|
||||
01/10/2017 - V1.8.12
|
||||
--------------------
|
||||
|
||||
Added null uplink option
|
||||
|
||||
Test for incoming null uplink message
|
||||
|
||||
21/09/2017 - V1.8.11
|
||||
--------------------
|
||||
|
||||
|
|
42
gateway.c
42
gateway.c
|
@ -35,7 +35,7 @@
|
|||
#include "config.h"
|
||||
#include "gui.h"
|
||||
|
||||
#define VERSION "V1.8.11"
|
||||
#define VERSION "V1.8.12"
|
||||
bool run = TRUE;
|
||||
|
||||
// RFM98
|
||||
|
@ -1338,6 +1338,16 @@ void DIO0_Interrupt( int Channel )
|
|||
|
||||
ProcessSSDVMessage( Channel, Message, Repeated);
|
||||
}
|
||||
else if ( Message[1] == 0x00)
|
||||
{
|
||||
time_t now;
|
||||
struct tm *tm;
|
||||
|
||||
now = time( 0 );
|
||||
tm = localtime( &now );
|
||||
|
||||
LogMessage("%02d:%02d:%02d Ch%d: Null uplink packet\n", tm->tm_hour, tm->tm_min, tm->tm_sec, Channel);
|
||||
}
|
||||
else
|
||||
{
|
||||
LogMessage("Unknown packet type is %02Xh, RSSI %d\n", Message[1], PacketRSSI(Channel));
|
||||
|
@ -1639,6 +1649,7 @@ void LoadConfigFile(void)
|
|||
Config.LoRaDevices[Channel].UplinkMode = -1;
|
||||
Config.LoRaDevices[Channel].UplinkTime = -1;
|
||||
Config.LoRaDevices[Channel].UplinkCycle = -1;
|
||||
Config.LoRaDevices[Channel].IdleUplink = FALSE;
|
||||
|
||||
LogMessage( "Channel %d frequency set to %.3lfMHz\n", Channel, Config.LoRaDevices[Channel].Frequency);
|
||||
Config.LoRaDevices[Channel].InUse = 1;
|
||||
|
@ -1656,12 +1667,21 @@ void LoadConfigFile(void)
|
|||
{
|
||||
LogMessage( "Channel %d UplinkTime %d Uplink Cycle %d\n", Channel, Config.LoRaDevices[Channel].UplinkTime, Config.LoRaDevices[Channel].UplinkCycle);
|
||||
|
||||
|
||||
RegisterConfigInteger(MainSection, Channel, "Power", &Config.LoRaDevices[Channel].Power, NULL);
|
||||
|
||||
|
||||
LogMessage( "Channel %d power set to %02Xh\n", Channel, Config.LoRaDevices[Channel].Power );
|
||||
|
||||
RegisterConfigBoolean(MainSection, Channel, "SSDVUplink", &Config.LoRaDevices[Channel].SSDVUplink, NULL);
|
||||
if (Config.LoRaDevices[Channel].SSDVUplink)
|
||||
{
|
||||
LogMessage( "Channel %d SSDV Uplink Enabled\n", Channel);
|
||||
}
|
||||
RegisterConfigBoolean(MainSection, Channel, "IdleUplink", &Config.LoRaDevices[Channel].IdleUplink, NULL);
|
||||
if (Config.LoRaDevices[Channel].IdleUplink)
|
||||
{
|
||||
LogMessage( "Channel %d Idle Uplink Enabled\n", Channel);
|
||||
}
|
||||
}
|
||||
|
||||
RegisterConfigInteger(MainSection, Channel, "Power", &Config.LoRaDevices[Channel].Power, NULL);
|
||||
|
@ -2111,13 +2131,17 @@ void SendUplinkMessage( int Channel )
|
|||
SendLoRaData(Channel, Config.LoRaDevices[Channel].UplinkMessage, strlen(Config.LoRaDevices[Channel].UplinkMessage)+1);
|
||||
*Config.LoRaDevices[Channel].UplinkMessage = 0;
|
||||
}
|
||||
else if ( GetTextMessageToUpload( Channel, Message ) )
|
||||
else if (GetTextMessageToUpload( Channel, Message))
|
||||
{
|
||||
SendLoRaData( Channel, Message, 255 );
|
||||
SendLoRaData(Channel, Message, 255);
|
||||
}
|
||||
else if ( GetExternalListOfMissingSSDVPackets( Channel, Message ) )
|
||||
else if (GetExternalListOfMissingSSDVPackets( Channel, Message))
|
||||
{
|
||||
SendLoRaData( Channel, Message, 255 );
|
||||
SendLoRaData(Channel, Message, 255);
|
||||
}
|
||||
else if (Config.LoRaDevices[Channel].IdleUplink)
|
||||
{
|
||||
SendLoRaData(Channel, "", 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2476,17 +2500,17 @@ int main( int argc, char **argv )
|
|||
}
|
||||
|
||||
// Uplink cycle time ?
|
||||
if ((Config.LoRaDevices[Channel].UplinkTime > 0) && (Config.LoRaDevices[Channel].UplinkCycle > 0))
|
||||
if ((Config.LoRaDevices[Channel].UplinkTime >= 0) && (Config.LoRaDevices[Channel].UplinkCycle > 0))
|
||||
{
|
||||
long CycleSeconds;
|
||||
|
||||
CycleSeconds = (tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec ) % Config.LoRaDevices[Channel].UplinkCycle;
|
||||
|
||||
if ( CycleSeconds == Config.LoRaDevices[Channel].UplinkTime )
|
||||
if (CycleSeconds == Config.LoRaDevices[Channel].UplinkTime)
|
||||
{
|
||||
LogMessage("%02d:%02d:%02d - Time to send uplink message\n", tm->tm_hour, tm->tm_min, tm->tm_sec);
|
||||
|
||||
SendUplinkMessage( Channel );
|
||||
SendUplinkMessage(Channel);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
1
global.h
1
global.h
|
@ -55,6 +55,7 @@ struct TPayload
|
|||
// Normal (non TDM) uplink
|
||||
int UplinkTime;
|
||||
int UplinkCycle;
|
||||
int IdleUplink;
|
||||
int SSDVUplink;
|
||||
char UplinkMessage[256];
|
||||
|
||||
|
|
14
server.c
14
server.c
|
@ -68,11 +68,16 @@ void ProcessJSONClientLine(int connfd, char *line)
|
|||
|
||||
if (strcasecmp(command, "send") == 0)
|
||||
{
|
||||
LogMessage("Message '%s' to send\n", value);
|
||||
|
||||
EncryptMessage(Config.UplinkCode, value+1); // +1 so we don't encode the key byt at the start of the message
|
||||
int channel;
|
||||
|
||||
strcpy(Config.LoRaDevices[1].UplinkMessage, value);
|
||||
channel = *value != '0';
|
||||
value++;
|
||||
|
||||
LogMessage("LoRa[%d]: To send '%s'\n", channel, value);
|
||||
|
||||
EncryptMessage(Config.UplinkCode, value);
|
||||
|
||||
strcpy(Config.LoRaDevices[channel].UplinkMessage, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -264,6 +269,7 @@ void *ServerLoop( void *some_void_ptr )
|
|||
{
|
||||
ServerInfo->Connected = 0;
|
||||
}
|
||||
ms = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Ładowanie…
Reference in New Issue