コード例 #1
0
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;
            }
        }
    }
    
}
コード例 #2
0
ファイル: hardware.c プロジェクト: fredgreer/geocase
// Unlock the case
void unlock() {
    debug("unlocking");
    
    solenoid_open_Write(1);
    
    state.locked = 0;
    state.last_open = RTC_GetUnixTime();
}