void CustomInterruptHandler(void) { if(onNtpSync) { uint8_t byte = 0; if(UART_XB_SpiUartGetRxBufferSize() > 0) byte=UART_XB_UartGetChar(); if(ntpFlagReadyForReceive && byte != 0) { NtpUnpackData(&recvDataNTP, (uint8_t)(byte & 0xFF)); if(recvDataNTP.EndPacket) { unixTime[T4] = RTC_GetUnixTime(); millisTime[T4] = RTCgetRecentMs(); unixTime[T2] = recvDataNTP.Data1; millisTime[T2] = recvDataNTP.DataMs1; unixTime[T3] = recvDataNTP.Data2; millisTime[T3] = recvDataNTP.DataMs2; #ifdef DEBUGNTP pinDebugNtp_Write(1); pinDebugNtp_Write(0); #endif ntpFlagEndReceivePacket = 1; ntpFlagReadyForReceive = 0; } } } }
// Unlock the case void unlock() { debug("unlocking"); solenoid_open_Write(1); state.locked = 0; state.last_open = RTC_GetUnixTime(); }