All we need to use data from BBMagic sensors is couple lines of code:
#include <stdio.h> #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) ; if(i) exit(1) ; do { bbm_id = bbm_bt_read(bbm_buf) ; if( bbm_id == BBMAGIC_M_BUTTON) { printf("Button: ") ; if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_SINGLE_CLICK) printf("SINGLE CLICK") ; else if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_DOUBLE_CLICK) printf("DOUBLE CLICK") ; else if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_HOLDING) printf("HOLDING") ; printf("\n\r") ; } if( bbm_id == BBMAGIC_M_MAGNETO) { printf("Window: ") ; if(bbm_buf[BBM_MAGNETO_FLAGS] & BBM_MAGNETO_MAGNET_MASK) printf(" CLOSED") ; else printf(" OPEN") ; printf("\n\r") ; } bbm_sleep_ms(100) ; }while(bbm_id != -1) ; bbm_bt_close() ; exit(0) ; }
And here is how it goes:
bbm_buf[100]
Its a little buffer for data received from BBMagic sensors.
bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG)
This function opens BBMagic Bluetooth Smart communication. For more see ‘bbmagic_lib.h’ file.
bbm_bt_read(bbm_buf)
Function for reading modules data. For more see ‘bbmagic_lib.h’ file.
if( bbm_id == BBMAGIC_M_BUTTON)
If there is data from BBMagic BUTTON module lets check it out: single button click, double button click or button holding.
if( bbm_id == BBMAGIC_M_MAGNETO)
If there is data from BBMagic MAGNETO lets print its state.
bbm_sleep_ms(100)
It stops mains application loop for 100 milliseconds. Use it instead of usleep(), sleep(), etc.
bbm_bt_close()
This function closes BBMagic Bluetooth Smart communication.
Do It Yourself
‘bbmagic_sensor_test’ is more complex example application. It receives data from such sensors:
- BBair
- BBMagic BUTTON
- BBMagic MOTION
- BBMagic METEO
- BBMagic MAGNETO
- BBMagic FLOOD
To get, unzip and install type:
wget http://bbmagic.net/download/src_2/bbmagic_sensor_test.tar.gz tar -zxvf bbmagic_sensor_test.tar.gz cd bbmagic_sensor_test sudo ./bbmagic_sensor_test
And how it deals with BUTTON, MAGNETO, MOTION and BBair sensors: