Stand Hoechfeld Update

This commit is contained in:
Joerg Lehmann 2019-09-07 09:57:35 +02:00
parent 12f048cc39
commit 794b4066ed
1 changed files with 65 additions and 52 deletions

View File

@ -37,6 +37,8 @@ using namespace McciCatena;
|
\****************************************************************************/
constexpr uint8_t kUplinkPort = 2;
/* how long do we wait between transmissions? (in seconds) */
enum {
// set this to interval between transmissions, in seconds
@ -84,7 +86,7 @@ unsigned gTxCycleCount;
// forwards
static void settleDoneCb(osjob_t* pSendJob);
static void warmupDoneCb(osjob_t* pSendJob);
static void txFailedDoneCb(osjob_t* pSendJob);
static void txNotProvisionedCb(osjob_t *pSendJob);
static void sleepDoneCb(osjob_t* pSendJob);
static Arduino_LoRaWAN::SendBufferCbFn sendBufferDoneCb;
static Arduino_LoRaWAN::ReceivePortBufferCbFn receiveMessage;
@ -251,11 +253,6 @@ void setup(void)
setup_bme280();
//setup_scales();
/* for 4451, we need wider tolerances, it seems */
#if defined(ARDUINO_ARCH_STM32)
LMIC_setClockError(MAX_CLOCK_ERROR * 10 / 100);
#endif
setup_flash();
setup_uplink();
}
@ -366,9 +363,6 @@ void setup_platform(void)
flags = 0;
}
// Swisscom temporary fix...
//LMIC_setDrTxpow(DR_SF10,14);
//LMIC_setAdrMode(1);
}
void setup_bme280(void)
@ -431,8 +425,17 @@ void setup_flash(void)
void setup_uplink(void)
{
#if defined(_mcci_arduino_version) && _mcci_arduino_version >= _mcci_arduino_version_calc(2,4,0,90) && \
defined(CATENA_ARDUINO_PLATFORM_VERSION_CALC) && CATENA_ARDUINO_PLATFORM_VERSION >= CATENA_ARDUINO_PLATFORM_VERSION_CALC(0,17,0,10)
LMIC_setClockError(5*65536/100);
#else
LMIC_setClockError(10*65536/100);
#endif
// Do an unjoin, so every reboot will trigger a join
gCatena.SafePrintf("Do an unjoin...\n");
LMIC_unjoin();
LMIC_setLinkCheckMode(1);
/* trigger a join by sending the first packet */
if (!(gCatena.GetOperatingFlags() & static_cast<uint32_t>(gCatena.OPERATING_FLAGS::fManufacturingTest))) {
@ -768,12 +771,12 @@ void startSendingUplink(bool firstTime)
#ifdef DEBUG
gCatena.SafePrintf("SendBuffer firstTime\n");
#endif
gLoRaWAN.SendBuffer((uint8_t*)&lora_data_first, sizeof(LORA_data_first), sendBufferDoneCb, NULL, fConfirmed);
gLoRaWAN.SendBuffer((uint8_t*)&lora_data_first, sizeof(LORA_data_first), sendBufferDoneCb, NULL, fConfirmed, kUplinkPort);
} else {
#ifdef DEBUG
gCatena.SafePrintf("SendBuffer not firstTime\n");
#endif
gLoRaWAN.SendBuffer((uint8_t*)&lora_data, sizeof(LORA_data), sendBufferDoneCb, NULL, fConfirmed);
gLoRaWAN.SendBuffer((uint8_t*)&lora_data, sizeof(LORA_data), sendBufferDoneCb, NULL, fConfirmed, kUplinkPort);
}
ClearLoraData();
}
@ -785,29 +788,39 @@ static void sendBufferDoneCb(
osjobcb_t pFn;
gLed.Set(LedPattern::Settling);
if (!fStatus) {
gCatena.SafePrintf("send buffer failed\n");
pFn = txFailedDoneCb;
}
else {
pFn = settleDoneCb;
if (! fStatus)
{
if (!gLoRaWAN.IsProvisioned())
{
// we'll talk about it at the callback.
pFn = txNotProvisionedCb;
// but prevent join attempts now.
gLoRaWAN.Shutdown();
}
else
gCatena.SafePrintf("send buffer failed\n");
}
os_setTimedCallback(
&sensorJob,
os_getTime() + sec2osticks(CATCFG_T_SETTLE),
pFn);
pFn
);
}
static void txFailedDoneCb(
osjob_t* pSendJob)
static void txNotProvisionedCb(
osjob_t *pSendJob
)
{
gCatena.SafePrintf("not provisioned, idling\n");
gCatena.SafePrintf("LoRaWAN not provisioned yet. Use the commands to set it up.\n");
gLoRaWAN.Shutdown();
gLed.Set(LedPattern::NotProvisioned);
}
static void settleDoneCb(
osjob_t* pSendJob)
{