Public Documentation
  • Introduction
  • Getting started
    • Introduction
    • 1. Welcome Page
    • 2. Introduction (Beginner's Guide)
  • Portal Tools
    • Blocko
      • Ůvod do blocka
      • Flip-flop
      • REST-API bloček
    • Grid
      • Úvod do GRID
      • Základní Tlačítko (základy GRID)
      • vylepšený Přepínač (stylování a pokročilé možnosti GRID)
      • text generátor button (messeage type, two elements one widget)
      • graf (pokročilé funkce GRID)
      • Slider (User class v GRIDu)
      • Styly a jejich použití
  • Cloud
    • Cloud
    • Instancies
    • Rest-Api
  • General
    • What we plan
  • Hardware a programování
    • Úvod
      • Nahrání prvního programu
    • Konektivita
      • Specifikace zdroje internetu
      • GSM
      • 6LowPAN
      • Komunikace s portálem
      • Přepínání mezi servery
    • Hardware
      • Základní jednotky
        • IODAG3E
          • Rozhraní a periférie
          • Konektor X a Y
          • Napájení
          • Připojení zdroje k VBAT
          • Paměti
          • Technické specifikace
          • Schémata
        • IODAG3L
      • Rozšiřující moduly
        • GSM shield
        • LED shield
        • Relay shield
        • RFID shield
        • Ultrasonic shield
        • Meteo shield
        • Movement shield
        • PIR shield
        • RGB Displej shield
        • Serial shield
      • Ostatní
        • DevKitG3
          • Schéma
        • TK3G
          • Schéma
        • ZPPG3
          • Schéma
        • WEXP
    • Programování HW
      • Architektura FW
        • Aktualizace FW
        • Autobackup
      • Struktura programu
      • Byzance API
        • Vstupy a výstupy do Portálu
        • Callback Busy
        • Odložený restart
        • Callbacky připojení
        • Uživatelská makra
      • MBED API
        • Vstupy a výstupy
        • Komunikační rozhraní
        • Časování
        • RTOS
      • Knihovny
        • DHT
        • DS1820
        • Dali
        • EdgeStruct
        • I2CWrapper
        • Knock
        • MFRC522
        • MFRC522::MIFARE_Key
        • MPU9150
        • ms5637
        • OneWire
        • PCA9536
        • RGB_matrix
        • RollerDrive
        • SHT21
        • ST7565
        • Servo
        • TCA6424A
        • TLC59116
        • TripleSevenSeg
        • MFRC522::Uid
        • WS2812
        • WakeUp
      • Offline programování
        • Vlastní IDE
        • Upload kódu z GUI
        • Upload kódu z konzole
        • Upload kódu Drag&drop
    • Tutoriály
      • Datum a čas (RTC)
      • Komunikace po sériové lince (UART) s PC
        • Konfigurace sériové linky v PC
        • Programování sériové linky
      • Základní tutoriály
        • Digital Read
        • Analog Read/Write
        • PWM Fade
        • Timer/Ticker
        • State Change Detection
        • Ovládání LED modulu
        • BusOut
        • HC-SR04 Senzor
      • Pokročilé
    • Správa a diagnostika
      • Zdroj restartu
      • LED modul
      • Identifikace zařízení
      • Monitoring parametrů
      • Vytížení zařízení
      • Webové rozhraní
        • Základní přehled
        • Správce firmware
        • Vlákna
        • Definované vstupy
        • Konfigurace MQTT
        • Nastavení
      • Bootloader
        • Režimy bootloaderu
        • Command mód
        • Další vlastnosti bootloaderu
      • Webová konzole
      • Konfigurace zařízení
        • Confighash
      • Omezení konfigurace
        • Konfigurace
        • Binárky
        • Omezení MQTT
        • Lowpan
    • Knowledge base
      • Náhodná čísla
      • Watchdog
      • Paměť RAM
Powered by GitBook
On this page
  1. Hardware a programování
  2. Programování HW
  3. Byzance API

Callback Busy

PreviousVstupy a výstupy do PortáluNextOdložený restart

Last updated 6 years ago

Callback je součást a slouží k oznamování, že zařízení provádí update nového firmware, nebo přípravu na tento update. Toto je nazýváno jako stav busy. Většinou to znamená, že na pozadí probíhá výpočetně náročnější operace, která může narušovat aktuálně probíhající uživatelský program.

Callback Busy slouží k ošetření uživatelského programu, aby nekolidoval s procesy probíhajícími na pozadí.

K zavolání callbacku může dojít v průběhu vykonávání programu i několikrát po sobě - typicky při přípravě na update a posléze při aktualizaci samotné. Po dokončení aktualizace uživatelského programu může dojít k .

Uživatelská funkce (callback), která má být vykonána v případě přepnutí do stavu "busy", se připojí pomocí následující konstrukce

Byzance::attach_bin_busy(&<user-function-name>);

Využití je vhodné v případě, kdy je v uživatelském programu například často voláno přerušení (ISR), které by mohlo potřebovat většinu výpočetního výkonu. Takovým případem může být například velmi často volaný Ticker. Dále je vhodné callback využít v případě, kdy je nutné ošetřit chování zařízení a ostatních připojených systémů v případě aktualizace. Takovým případem může být libovolný aktuátor, který by se v nejhorším případě mohl v průběhu update stát neovladatelným.

Uživatelská funkce připojená ke callbacku je volána pokaždé, když se změní stav busy a tato informace je zároveň předána v argumentu volané funkce

// Function attached to busy callback
void busy_function(bool busy){

    if(busy){

      // Disable interrupts  
      // Detach tickers 
      // Turn off actuators (Motors, pumps, )
      // etc ..  

    } else {

      // Enable interrupts
      // Attach tickers again 
      // etc ..     

    }

}

Ukázka kódu

Následující ukázka kódu při startu programu inicializuje ticker, který může vykonávat nějakou činnost.

Ticker tic;
Serial pc(SERIAL_TX, SERIAL_RX);


void ticker_fnc(){

    // DO SOMETHING USEFUL

}

// Function called when the device is in busy state 
void bin_busy(bool busy){
    if(busy){

        // detach
        pc.printf("*** BUSY: detaching ticker\n");
        tic::attach(NULL);

        // Disable other interrupts 
        // Turn motors off before restart 
        // Turn off other actuators 
        // etc .. 

    }
}

void init() {

    // Attach ticker function 
    tic.attach(&ticker_fnc);

    // Attach function "bin_busy" to Busy callback
    Byzance::attach_bin_busy(&bin_busy);    

}
Byzance API
restartu zařízení
Aktualizace FW