Get Client Mac Address in GATTSService/Characteristic



  • I'm connecting to my LoPy using my Android phone and the app "BLE Scanner".

    I would like to be able to print the MAC address of my Android phone once i try to read on a characteristic but i'm unsure how this is done using GATTSService/Characteristic.

    from network import Bluetooth
    
    bluetooth = Bluetooth()
    bluetooth.set_advertisement(name='LoPy', service_uuid=b'1234567890123456')
    
    def conn_cb (bt_o):
    	events = bt_o.events()
    	if  events & Bluetooth.CLIENT_CONNECTED:
    		print("Client connected")
    	elif events & Bluetooth.CLIENT_DISCONNECTED:
    		print("Client disconnected")
    
    bluetooth.callback(trigger=Bluetooth.CLIENT_CONNECTED | Bluetooth.CLIENT_DISCONNECTED, handler=conn_cb)
    
    bluetooth.advertise(True)
    
    srv1 = bluetooth.service(uuid=b'1234567890123456', isprimary=True)
    
    chr1 = srv1.characteristic(uuid=b'ab34567890123456', value=5)
    
    char1_read_counter = 0
    def char1_cb_handler(chr):
    	global char1_read_counter
    	char1_read_counter += 1
    
    	events = chr.events()
    	if  events & Bluetooth.CHAR_WRITE_EVENT:
    		print("Write request with value = {}".format(chr.value()))
    	else:
    		if char1_read_counter < 3:
    			print(bluetooth.client(mac_adder)) #print phone MAC address??
    		else:
    			return 'ABC DEF'
    
    char1_cb = chr1.callback(trigger=Bluetooth.CHAR_WRITE_EVENT | Bluetooth.CHAR_READ_EVENT, handler=char1_cb_handler)
    
    srv2 = bluetooth.service(uuid=1234, isprimary=True)
    
    chr2 = srv2.characteristic(uuid=4567, value=0x1234)
    char2_read_counter = 0xF0
    def char2_cb_handler(chr):
    	global char2_read_counter
    	char2_read_counter += 1
    	if char2_read_counter > 0xF1:
    		return char2_read_counter
    
    char2_cb = chr2.callback(trigger=Bluetooth.CHAR_READ_EVENT, handler=char2_cb_handler)


  • We created a service with multiple characteristics but could only see the first characteristic using BLE scanner.



  • @ledbelly2142 I can write multiple times from the app on my phone to the Characteristic if that's what you mean?

    are you writing values from a mobile app? or do you want multiple values per characteristic? because as far as i am aware each characteristic has a single value and you can create multiple characteristics.



  • I am having some issues with Bluetooth and the GATTSService/Characteristic, can't write multiple values.

    Are you able to write multiple values?


Log in to reply
 

Pycom on Twitter