V1.8.12 - Null Uplink

pull/28/head^2
Dave Akerman 2017-10-01 10:07:54 +00:00
rodzic 605eb3bb96
commit 4ee4530705
4 zmienionych plików z 51 dodań i 13 usunięć

Wyświetl plik

@ -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
--------------------

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -55,6 +55,7 @@ struct TPayload
// Normal (non TDM) uplink
int UplinkTime;
int UplinkCycle;
int IdleUplink;
int SSDVUplink;
char UplinkMessage[256];

Wyświetl plik

@ -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