Initiering och uppsägning
Vid start bör alla Azure Sphere-program utföra en del initiering:
Registrera en SIGTERM-hanterare för uppsägningsförfrågningar. Azure Sphere-enhetsoperativsystemet skickar SIGTERM-avslutningssignalen för att indikera att programmet måste avslutas, oftast när en uppdatering väntar, men också som svar på en begäran om att stänga av enheten. Som en del av sin initieringskod bör ansökan registrera en hanterare för sådana förfrågningar. Till exempel:
#include <signal.h> ... // Register a SIGTERM handler for termination requests struct sigaction action; memset(&action, 0, sizeof(struct sigaction)); action.sa_handler = TerminationHandler; sigaction(SIGTERM, &action, NULL);
I avslutningshanteraren kan programmet utföra de avstängningsuppgifter som krävs. Avslutningshanterare måste vara POSIX async-signalsäkra. I synnerhet får de inte innehålla samtal till
Log_Debug()
. Exempelprogrammen avslutas vid fel samt när slutsignalen tas emot. Därför ställer dessa program helt enkelt in en boolesk i avslutningshanteraren och utför sedan rensnings- och avstängningsuppgifter när huvudslingan har avslutats.Initiera handtag för GPIO-kringutrustning.
Om programmet använder Azure IoT Hub ansluter du till IoT-klienten och registrerar återanropsfunktioner för IoT-funktioner, till exempel meddelanden från molnet till enheten, enhetens tvillingstatus och samtal med direktmetoden.
Vid avslutningen ska programmet stänga kringutrustning, förstöra handtag och frigöra allokerat minne. Programmet har bara två sekunder på sig att avsluta efter mottagandet av SIGTERM-signalen. om programmet inte har avslutats skickar Azure Sphere OS en SIGKILL-signal som omedelbart avslutar programmet. SIGKILL-signalen ska alltid undvikas. Om programmet rutinmässigt utför åtgärder som kan ta längre tid än två sekunder att slutföra kan du lägga till en loop för uppskjuten uppdatering i programmet. Program som använder Powerdown-funktionen bör göra alla nödvändiga rensningar innan du anropar energispar-API:erna.