mirror of https://github.com/arendst/Tasmota.git
add watch and block, code changes only
This commit is contained in:
parent
40d231875f
commit
cf80b826ac
|
@ -32,6 +32,8 @@ extern int be_BLE_set_MAC(bvm *vm);
|
||||||
extern int be_BLE_set_characteristic(bvm *vm);
|
extern int be_BLE_set_characteristic(bvm *vm);
|
||||||
extern int be_BLE_run(bvm *vm);
|
extern int be_BLE_run(bvm *vm);
|
||||||
extern int be_BLE_set_service(bvm *vm);
|
extern int be_BLE_set_service(bvm *vm);
|
||||||
|
extern int be_BLE_adv_watch(bvm *vm);
|
||||||
|
extern int be_BLE_adv_block(bvm *vm);
|
||||||
|
|
||||||
#include "be_fixed_be_class_BLE.h"
|
#include "be_fixed_be_class_BLE.h"
|
||||||
|
|
||||||
|
@ -43,7 +45,9 @@ class be_class_BLE (scope: global, name: BLE) {
|
||||||
set_chr, func(be_BLE_set_characteristic)
|
set_chr, func(be_BLE_set_characteristic)
|
||||||
adv_cb, func(be_BLE_reg_adv_cb)
|
adv_cb, func(be_BLE_reg_adv_cb)
|
||||||
set_MAC, func(be_BLE_set_MAC)
|
set_MAC, func(be_BLE_set_MAC)
|
||||||
|
adv_watch, func(be_BLE_adv_watch)
|
||||||
|
adv_block, func(be_BLE_adv_block)
|
||||||
}
|
}
|
||||||
@const_object_info_end */
|
@const_object_info_end */
|
||||||
|
|
||||||
#endif //USE_MI_ESP32
|
#endif //USE_MI_ESP32
|
|
@ -122,6 +122,8 @@ extern "C" {
|
||||||
extern bool MI32setBerryCtxSvc(const char *Svc);
|
extern bool MI32setBerryCtxSvc(const char *Svc);
|
||||||
extern bool MI32setBerryCtxChr(const char *Chr);
|
extern bool MI32setBerryCtxChr(const char *Chr);
|
||||||
extern bool MI32setBerryCtxMAC(uint8_t *MAC, uint8_t type);
|
extern bool MI32setBerryCtxMAC(uint8_t *MAC, uint8_t type);
|
||||||
|
extern bool MI32addMACtoBlockList(uint8_t *MAC, uint8_t type);
|
||||||
|
extern bool MI32addMACtoWatchList(uint8_t *MAC, uint8_t type);
|
||||||
|
|
||||||
|
|
||||||
int be_BLE_reg_conn_cb(bvm *vm);
|
int be_BLE_reg_conn_cb(bvm *vm);
|
||||||
|
@ -191,11 +193,40 @@ extern "C" {
|
||||||
int be_BLE_run(bvm *vm);
|
int be_BLE_run(bvm *vm);
|
||||||
int be_BLE_run(bvm *vm){
|
int be_BLE_run(bvm *vm){
|
||||||
int32_t argc = be_top(vm); // Get the number of arguments
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
if (argc == 2 && be_isint(vm, 2)) {
|
if ((argc == 2) && be_isint(vm, 2)) {
|
||||||
if (MI32runBerryConnection(be_toint(vm, 2))) be_return(vm);
|
if (MI32runBerryConnection(be_toint(vm, 2))) be_return(vm);
|
||||||
}
|
}
|
||||||
be_raise(vm, kTypeError, nullptr);
|
be_raise(vm, kTypeError, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int be_BLE_adv_block(bvm *vm);
|
||||||
|
int be_BLE_adv_block(bvm *vm){
|
||||||
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
|
if (argc > 1 && be_isbytes(vm, 2)) {
|
||||||
|
size_t len = 6;
|
||||||
|
uint8_t type = 0;
|
||||||
|
if(argc == 3 && be_isint(vm, 3)){
|
||||||
|
type = be_toint(vm,3);
|
||||||
|
}
|
||||||
|
if(MI32addMACtoBlockList((uint8_t*)be_tobytes(vm, 2, &len),type)) be_return(vm);
|
||||||
|
}
|
||||||
|
be_raise(vm, kTypeError, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int be_BLE_adv_watch(bvm *vm);
|
||||||
|
int be_BLE_adv_watch(bvm *vm){
|
||||||
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
|
if (argc > 1 && be_isbytes(vm, 2)) {
|
||||||
|
size_t len = 6;
|
||||||
|
uint8_t type = 0;
|
||||||
|
if(argc == 3 && be_isint(vm, 3)){
|
||||||
|
type = be_toint(vm,3);
|
||||||
|
}
|
||||||
|
if (MI32addMACtoWatchList((uint8_t*)be_tobytes(vm, 2, &len),type)) be_return(vm);
|
||||||
|
}
|
||||||
|
be_raise(vm, kTypeError, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
} //extern "C"
|
} //extern "C"
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,16 +244,18 @@ be_BLE_op:
|
||||||
1 read
|
1 read
|
||||||
2 write
|
2 write
|
||||||
3 subscribe
|
3 subscribe
|
||||||
4 unsubscribe
|
4 unsubscribe - maybe later
|
||||||
5 disconnect
|
5 disconnect
|
||||||
|
|
||||||
11 read once, then disconnect
|
11 read once, then disconnect
|
||||||
12 write once, then disconnect
|
12 write once, then disconnect
|
||||||
13 subscribe once, then disconnect
|
13 subscribe once, then disconnect
|
||||||
14 unsubscribe once, then disconnect
|
14 unsubscribe once, then disconnect - maybe later
|
||||||
|
|
||||||
BLE.conn_cb(cb,buffer)
|
BLE.conn_cb(cb,buffer)
|
||||||
BLE.adv_cb(cb,buffer)
|
BLE.adv_cb(cb,buffer)
|
||||||
|
BLE.adv_watch(MAC)
|
||||||
|
BLE.adv_block(MAC)
|
||||||
|
|
||||||
MI32.devices()
|
MI32.devices()
|
||||||
MI32.get_name(slot)
|
MI32.get_name(slot)
|
||||||
|
@ -231,4 +264,4 @@ MI32.set_bat(slot,int)
|
||||||
MI32.set_hum(slot,float)
|
MI32.set_hum(slot,float)
|
||||||
MI32.set_temp(slot,float)
|
MI32.set_temp(slot,float)
|
||||||
|
|
||||||
*/
|
*/
|
|
@ -22,6 +22,8 @@
|
||||||
--------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------
|
||||||
Version yyyymmdd Action Description
|
Version yyyymmdd Action Description
|
||||||
--------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------
|
||||||
|
0.9.5.4 20220325 changed - add Berry adv_watch and adv_block to BLE class
|
||||||
|
-------
|
||||||
0.9.5.3 20220315 changed - reworked Berry part, active scanning and holding active connections possible, new format of advertisement buffer
|
0.9.5.3 20220315 changed - reworked Berry part, active scanning and holding active connections possible, new format of advertisement buffer
|
||||||
-------
|
-------
|
||||||
0.9.5.1 20220209 changed - rename YEERC to YLYK01, add dimmer YLKG08 (incl. YLKG07), change button report scheme
|
0.9.5.1 20220209 changed - rename YEERC to YLYK01, add dimmer YLKG08 (incl. YLKG07), change button report scheme
|
||||||
|
@ -707,6 +709,33 @@ extern "C" {
|
||||||
MI32.beAdvBuf = buffer;
|
MI32.beAdvBuf = buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MI32addMACtoBlockList(uint8_t *MAC, uint8_t type){
|
||||||
|
NimBLEDevice::addIgnored(NimBLEAddress(MAC,type));
|
||||||
|
return NimBLEDevice::isIgnored(NimBLEAddress(MAC,type));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MI32addMACtoWatchList(uint8_t *MAC, uint8_t type){
|
||||||
|
NimBLEAddress _newAddress = NimBLEAddress(MAC,type);
|
||||||
|
if(MI32Scan==nullptr){
|
||||||
|
if(!NimBLEDevice::whiteListAdd(_newAddress)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
bool _runningScan = MI32Scan->stop();
|
||||||
|
if(NimBLEDevice::whiteListAdd(_newAddress)){
|
||||||
|
MI32Scan->setFilterPolicy(BLE_HCI_SCAN_FILT_USE_WL);
|
||||||
|
if(_runningScan) MI32Scan->start(0, MI32scanEndedCB, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(_runningScan) MI32Scan->start(0, MI32scanEndedCB, false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AddLog(LOG_LEVEL_INFO,PSTR("M32: add %s to watchlist of size: %u"),_newAddress.toString().c_str(),NimBLEDevice::getWhiteListCount());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void MI32setBatteryForSlot(uint32_t slot, uint8_t value){
|
void MI32setBatteryForSlot(uint32_t slot, uint8_t value){
|
||||||
if(slot>MIBLEsensors.size()-1) return;
|
if(slot>MIBLEsensors.size()-1) return;
|
||||||
if(MIBLEsensors[slot].feature.bat){
|
if(MIBLEsensors[slot].feature.bat){
|
||||||
|
@ -1017,9 +1046,15 @@ void MI32ScanTask(void *pvParameters){
|
||||||
MI32Scan->setInterval(70);
|
MI32Scan->setInterval(70);
|
||||||
MI32Scan->setWindow(50);
|
MI32Scan->setWindow(50);
|
||||||
MI32Scan->setAdvertisedDeviceCallbacks(&MI32ScanCallbacks,true);
|
MI32Scan->setAdvertisedDeviceCallbacks(&MI32ScanCallbacks,true);
|
||||||
|
if(NimBLEDevice::getWhiteListCount()>0){
|
||||||
|
MI32Scan->setFilterPolicy(BLE_HCI_SCAN_FILT_USE_WL);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MI32Scan->setFilterPolicy(BLE_HCI_SCAN_FILT_NO_WL);
|
||||||
|
}
|
||||||
MI32Scan->setActiveScan(MI32.option.activeScan);
|
MI32Scan->setActiveScan(MI32.option.activeScan);
|
||||||
MI32Scan->setMaxResults(0);
|
MI32Scan->setMaxResults(0);
|
||||||
MI32Scan->start(0, MI32scanEndedCB, true); // never stop scanning, will pause automatically while connecting
|
MI32Scan->start(0, MI32scanEndedCB, false); // never stop scanning, will pause automatically while connecting
|
||||||
MI32.infoMsg = MI32_START_SCANNING;
|
MI32.infoMsg = MI32_START_SCANNING;
|
||||||
|
|
||||||
uint32_t timer = 0;
|
uint32_t timer = 0;
|
||||||
|
@ -2282,4 +2317,4 @@ bool Xsns62(uint8_t function)
|
||||||
#endif // USE_MI_ESP32
|
#endif // USE_MI_ESP32
|
||||||
#endif // CONFIG_IDF_TARGET_ESP32 or CONFIG_IDF_TARGET_ESP32C3
|
#endif // CONFIG_IDF_TARGET_ESP32 or CONFIG_IDF_TARGET_ESP32C3
|
||||||
#endif // ESP32
|
#endif // ESP32
|
||||||
#endif // USE_BLE_ESP32
|
#endif // USE_BLE_ESP32
|
Loading…
Reference in New Issue