Passing one object to another
-
I have created a logging class that works fine except when I wish to pass an instance of BLE class so that I can redirect the logs to BLE.
oBLE = BLE(oConfig,devicename)
oLOGGING = LOGGING(oBLE)
oLOGGING.logger("config::oBLE[" + str(oBLE.enable) + "]",level=4)****ERROR *** logger::Exception'NoneType' object has no attribute 'Write_log'
class LOGGING: def __init__(self, oBLE): self.oBLE = oBLE def logger(self,msg,showtime=True,level=3,topic="",bdebug=True,debuglevel=3): #error0,warning1,debug2,info3,verbose4 try: self.oBLE.Write_log(msg) except Exception as e: print(" logger::Exception" + str(e)) if bdebug and debuglevel>=level: if showtime: print(" | ",msg) else: print(msg) # send_msg("outbox",msg)
class BLE: global intRTCErrors def __init__(self,oConfig,devicename="devicename"): global bluetooth self.oConfig = oConfig self.bluetooth = Bluetooth() self.devicename=devicename self.char1_read_counter=-1 self.BLEchr=None self.bluetooth.init() self.__enable = True # DEFAULT VALUE IF NOT FOUND IN NVMEM self.__started = False print("---START --- BLUEON ------------------------------------------------") global chr1 try: # LOGGING.logger("CMD::BLEADVERTISE...") global chr_light global chr_temp global chr_humidity global chr_batt global chr3 self.bluetooth.set_advertisement(name=self.devicename, service_uuid=b'1134567890123456') self.bluetooth.callback(trigger=Bluetooth.CLIENT_CONNECTED | Bluetooth.CLIENT_DISCONNECTED, handler=self.BLE_connection_callback) self.bluetooth.advertise(True) # LOGGING.logger("CMD::BLEADVERTISE::Setup Service #DEEDAAFB-0000-0000-0000-000000000001") srv1 = self.bluetooth.service(uuid=uuid2bytes('DEEDAAFB-0000-0000-0000-000000000001'), isprimary=True,nbr_chars=5) chr1 = srv1.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000001'),properties=Bluetooth.PROP_WRITE | Bluetooth.PROP_INDICATE | Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=self.devicename) chr_light = srv1.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000002'),properties=Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=0) chr_temp = srv1.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000003'),properties=Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=0) chr_humidity = srv1.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000004'),properties=Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=0) chr_batt = srv1.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000005'),properties=Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=0) #chr1 = srv1.characteristic(uuid=b'ab34567890123456', value=5) char1_cb = chr1.callback(trigger=Bluetooth.CHAR_WRITE_EVENT, handler=self.write_handler) char2_cb = chr1.callback(trigger=Bluetooth.CHAR_READ_EVENT, handler=self.read_handler) # LOGGING.logger("CMD::BLEADVERTISE::DRM Service #DEEDAAFB-0000-0000-0000-000000000002") # srv2 = bluetooth.service(uuid=uuid2bytes('DEEDAAFB-0000-0000-0000-000000000002'), isprimary=True) # chr2 = srv2.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000002'),properties=Bluetooth.PROP_INDICATE | Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value=str(wl.ifconfig())) # char2_read_counter = 0xF0 # char2_cb = chr2.callback(trigger=Bluetooth.CHAR_WRITE_EVENT | Bluetooth.CHAR_READ_EVENT, handler=char2_cb_handler) # LOGGING.logger("CMD::BLEADVERTISE::Command Service #DEEDAAFB-0000-0000-0000-000000000003") srv3 = self.bluetooth.service(uuid=uuid2bytes('DEEDAAFB-0000-0000-0000-000000000003'), isprimary=True) self.BLEchr = srv3.characteristic(uuid=uuid2bytes('DEEDAAFB-0000-0000-000C-000000000003'),properties=Bluetooth.PROP_INDICATE | Bluetooth.PROP_BROADCAST | Bluetooth.PROP_READ | Bluetooth.PROP_NOTIFY, value="logging..") char3_cb = self.BLEchr.callback(trigger=Bluetooth.CHAR_WRITE_EVENT, handler=self.BLE_CommandService_handler) self.BLEchr.value("ble logging.....") self.Write_log("bleuey more..") except Exception as e: intRTCErrors=0 print("ble::exceptiond " + str(e),level=1) print("---END --- BLUEON ------------------------------------------------") return "BLEADVERTISE..DONE" def Write_log(self,slog): print("Blueit..",slog) self.BLEchr.value(slog)