Aplikacja BBMagic na 10 linii kodu


Projekt składa się z

  • pliku ‚bbmagic_10_lines_app.c’ – główny plik aplikacji z kodem
  • pliku ‚bbmagic_lib.h’ – plik z deklaracjami funkcji biblioteki bbmagic_lib. To skarbnica wiedzy o tym co można zrobić z modułami BBMagic.
  • pliku ‚Makefile’ – plik z instrukcjami kompilacji. Dzięki niemu kompilację przeprowadzimy wydając jedno polecenie: ‚make’
  • katalogu ‚libs’ – znajdują się w nim biblioteki z których skorzystamy podczas kompilacji projektu
  • katalogu ‚tools’ – tu znajdują się narzędzia np. aplikacja bbm_scanner dzięki, której możemy natychmiast zobaczyć jak działa dowolny sensor BBMagic oraz odczytać klucz szyfrujący aktorów BBMagic

Najkrótsza aplikacja BBMagic

Każda aplikacja BBMagic zbudowana jest na bazie poniższgo szablonu. Sterowanie roletami, stacja pogody czy sterowanie światłem z czujką ruchu – wszystkie one posiadają wspólny rdzeń. O taki:

#include <stdlib.h>
#include "bbmagic_lib.h"
int main(void)
{
    unsigned char bbm_buf[100] ;
    int i, bbm_id ;
    i = bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG | LIB_SHOW_SENSORS | LIB_SHOW_ACTORS) ;
    if(i) exit(1) ;
    do
    {
        bbm_id = bbm_bt_read(bbm_buf) ;
        bbm_sleep_ms(100) ;
    }while(bbm_id != -1) ;
    bbm_bt_close() ;
    exit(0) ;
}

bbm_buf[100]
To bufor na dane odbierane od sensorów i aktorów BBMagic.

bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG | LIB_SHOW_SENSORS | LIB_SHOW_ACTORS)
Funkcja otwiera komunikację BBMagic Bluetooth Smart. W miejsce pierwszych trzech zer można wpisać numery pinów Raspbeey Pi z podłączonymi przez rezystory diodami LED sygnalizującymi kolejno: odbieranie, wysyłanie danych oraz działanie aplikacji.
Flagi włączają kolejno:

  • LIB_SHOW_CONFIG – wyświetlanie przez bibliotekę bbmagic_lib_2 komunikatów startowych,
  • LIB_SHOW_SENSORS – wyświetlanie przez bibliotekę bbmagic_lib_2 danych odebranych z sensorów BBMagic,
  • LIB_SHOW_ACTORS – wyświetlanie przez bibliotekę bbmagic_lib_2 informacji związanych z działaniem aktorów BBMagic.

bbm_bt_read(bbm_buf)
Funkcja z biblioteki bbmagic_lib_2 zapisująca w buforze dane odebrane od modułów BBMagic. Po wykonaniu funkcji w zmiennej ‚bbm_id’ może pojawić się:

  • wartość większa od 0 – numer modułu BBMagic który przysłał dane. Numery modułów zdefiniowane są w pliku ‚bbmagic_lib.h’. Np. moduł BBMagic METEO ma numer 1 (#define BBMAGIC_M_METEO 1).
    Dane otrzymane od modułu znajdują się w buforze bbm_buf[]. Położenie konkretnych danych zdefiniowano również w pliku ‚bbmagic_lib.h’. Np. poziom natężenia światła z modułu METEO mamy tu: bbm_buf[BBM_METEO_LIGHT] (#define BBM_METEO_LIGHT 11).
  • 0 – oznacza brak nowych danych od modułów BBMagic.
  • -1 – oznacza zakończenie programu (np.użytkownik nacisnął Ctrl+C)

bbm_sleep_ms(100)
Zatrzymuje pętlę główną na 100ms. Zastępuje funkcje usleep(), sleep(), itp. które nie są kompatybilne z bibliteką bbmagic_lib_2.

bbm_bt_close()
Funkcja z biblioteki bbmagic_lib_2 zamykająca komunikację BBMagic Bluetooth Smart.

Zrób to sam

Pobierz skrypt:

wget www.bbmagic.net/download/get_BBMagic_10_line_app.sh

Nadaj mu prawo wykonywania:

chmod +x get_BBMagic_10_line_app.sh

Uruchom go:

./get_BBMagic_10_line_app.sh

getting BBMagic 10 lines app
Teraz wystarczy przejsc do katalogu projektu:

cd bbmagic_10_lines_app

I uruchomić aplikację:

sudo ./bbmagic_10_lines_app

run BBMagic 10 lines app

Czy ta aplikacja ma rzeczywiście 10 linii?

Policz sam 🙂

#include <stdlib.h>
#include "bbmagic_lib.h"
int main(void){
    unsigned char bbm_buf[100] ; int bbm_id ;
    if(bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG | LIB_SHOW_SENSORS | LIB_SHOW_ACTORS)) exit(1) ;
    do{
        bbm_id = bbm_bt_read(bbm_buf) ; bbm_sleep_ms(100) ;
    }while(bbm_id != -1) ;
    bbm_bt_close() ; exit(0) ;
}
Tagi , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *