Last active
August 29, 2015 14:26
-
-
Save KazuyukiEguchi/df45a8ce9e13bcbae1c8 to your computer and use it in GitHub Desktop.
BLEモジュールの BL600 を使って、 Eddystone 対応のビーコンを作ってみる ref: http://qiita.com/KazuyukiEguchi/items/e3f652a2cb8121f9fe98
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' BL600用 Eddystoneサンプルアプリ | |
' Programed by Kazuyuki Eguchi | |
DIM rc AS INTEGER | |
DIM txpower AS INTEGER : txpower = 4 | |
DIM addr$ : addr$="" | |
DIM advRpt$ | |
DIM scnRpt$ : scnRpt$="" | |
DIM adElmnt$ : adElmnt$="\aa\fe" | |
DIM devname$ : devname$="" | |
DIM flag AS INTEGER : flag = 0 | |
DIM adv AS INTEGER : adv = 0 | |
DIM tim AS INTEGER : tim = 0 | |
FUNCTION HandlerTimer0() | |
IF flag == 0 THEN | |
IF BleAdvertStop()==0 THEN | |
ENDIF | |
// Eddystone UID | |
DIM adElmnt1$ : adElmnt1$="\aa\fe\00\00\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f" | |
DIM power1 AS INTEGER : power1 = SYSINFO(2008) | |
IF power1 < 0 THEN | |
power1 = 256 + power1 | |
ENDIF | |
rc = StrSetChr(adElmnt1$,power1 & 0xff,3) | |
rc = BleAdvRptInit(advRpt$, 2, 0, 0) | |
rc = BleAdvRptAppendAD(advRpt$,0x03,adElmnt$) | |
rc = BleAdvRptAppendAD(advRpt$,0x16,adElmnt1$) | |
rc = BleScanRptInit(scnRpt$) | |
rc = BleAdvRptAppendAD(scnRpt$,0x09,devname$) | |
rc = BleAdvRptsCommit(advRpt$,scnRpt$) | |
IF BleAdvertStart(3,addr$,500,0,0)==0 THEN | |
ELSE | |
ENDIF | |
ELSEIF flag == 2 THEN | |
IF BleAdvertStop()==0 THEN | |
ENDIF | |
// Eddystone URL | |
DIM adElmnt2$ : adElmnt2$="\aa\fe\10\00\02eguchi.jp" | |
DIM power2 AS INTEGER : power2 = SYSINFO(2008) | |
IF power2 < 0 THEN | |
power2 = 256 + power2 | |
ENDIF | |
rc = StrSetChr(adElmnt2$,power2 & 0xff,3) | |
rc = BleAdvRptInit(advRpt$, 2, 0, 0) | |
rc = BleAdvRptAppendAD(advRpt$,0x03,adElmnt$) | |
rc = BleAdvRptAppendAD(advRpt$,0x16,adElmnt2$) | |
rc = BleScanRptInit(scnRpt$) | |
rc = BleAdvRptAppendAD(scnRpt$,0x09,devname$) | |
rc = BleAdvRptsCommit(advRpt$,scnRpt$) | |
IF BleAdvertStart(3,addr$,500,0,0)==0 THEN | |
ELSE | |
ENDIF | |
ELSEIF flag == 5 THEN | |
IF BleAdvertStop()==0 THEN | |
ENDIF | |
// Eddystone TLM | |
adv = adv + 10 | |
tim = tim + 50 | |
DIM adElmnt3$ : adElmnt3$="\aa\fe\20\00\01\00\02\00\00\00\00\00\00\00\00\00" | |
DIM temp : temp = 0 | |
DIM vol : vol = 3000 // mv | |
rc = StrSetChr(adElmnt3$,(vol & 0xff),5) | |
rc = StrSetChr(adElmnt3$,((vol >> 8) & 0xff),4) | |
rc = StrSetChr(adElmnt3$,(temp & 0xff),7) | |
rc = StrSetChr(adElmnt3$,((temp >> 8) & 0xff),6) | |
rc = StrSetChr(adElmnt3$,(adv & 0xff),11) | |
rc = StrSetChr(adElmnt3$,((adv >> 8) & 0xff),10) | |
rc = StrSetChr(adElmnt3$,((adv >> 16) & 0xff),9) | |
rc = StrSetChr(adElmnt3$,((adv >> 24) & 0xff),8) | |
rc = StrSetChr(adElmnt3$,(tim & 0xff),15) | |
rc = StrSetChr(adElmnt3$,((tim >> 8) & 0xff),14) | |
rc = StrSetChr(adElmnt3$,((tim >> 16) & 0xff),13) | |
rc = StrSetChr(adElmnt3$,((tim >> 24) & 0xff),12) | |
rc = BleAdvRptInit(advRpt$, 2, 0, 0) | |
rc = BleAdvRptAppendAD(advRpt$,0x03,adElmnt$) | |
rc = BleAdvRptAppendAD(advRpt$,0x16,adElmnt3$) | |
rc = BleScanRptInit(scnRpt$) | |
rc = BleAdvRptAppendAD(scnRpt$,0x09,devname$) | |
rc = BleAdvRptsCommit(advRpt$,scnRpt$) | |
IF BleAdvertStart(3,addr$,500,0,0)==0 THEN | |
ELSE | |
ENDIF | |
ENDIF | |
flag = flag + 1 | |
IF flag > 5 THEN | |
flag = 0 | |
ENDIF | |
ENDFUNC 1 | |
ONEVENT EVTMR0 CALL HandlerTimer0 | |
rc = BleTxPowerSet(txpower) | |
TimerStart(0,1000,1) | |
PRINT "\nWaiting for Timer 0\n" | |
WAITEVENT |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment