예제 #1
0
    async def set_genSens_TxPwrLvl(self, advScan, conn, **kwargs):
        try:
            assert (advScan >= 1 and advScan <= 9), (
                "Parameter \'advScan\' has to be between 1 and 9")
            assert (conn >= 1 and conn <= 9), (
                "Parameter \'conn\' has to be between 1 and 9")

            data = bytearray(uint8(advScan), uint8(conn))

            self.client.write_gatt_char(
                GenericSensor.GEN_SENS_TX_PWR_LVL_CHAR_UUID, data, **kwargs)

            self.genSens_TxPwrLvl_AdvScan = advScan
            self.genSens_TxPwrLvl_Conn = conn

            pwrLvl = [
                "TX_PWR_LVL_NEG_18_DBM", "TX_PWR_LVL_NEG_12_DBM",
                "TX_PWR_LVL_NEG_6_DBM", "TX_PWR_LVL_NEG_3_DBM",
                "TX_PWR_LVL_NEG_2_DBM", "TX_PWR_LVL_NEG_1_DBM",
                "TX_PWR_LVL_0_DBM", "TX_PWR_LVL_3_DBM", "TX_PWR_LVL_MAX"
            ]

            self.logger.info(
                "[" + currentFuncName() + "] transmitted: " +
                f"TxPwrLvl_AdvScan: {pwrLvl[self.genSens_TxPwrLvl_AdvScan-1]}\t"
                + f"TxPwrLvl_Conn: {pwrLvl[self.genSens_TxPwrLvl_Conn-1]}")

            return self.genSens_TxPwrLvl_AdvScan, self.genSens_TxPwrLvl_Conn

        except Exception as e:
            self.genSens_TxPwrLvl_AdvScan = None
            self.genSens_TxPwrLvl_Conn = None
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #2
0
	async def set_temp_CalibrationData(self, calA, calB, **kwargs):
		try:
			# Write A and B to bytearray:
			caldata = bytearray([39, 16, 0, 0, 49, 57, 55, 48, 48, 49, 48, 49])
			caldata[0] = np.uint8(calA >> 8)
			caldata[1] = np.uint8(calA & 0x00FF)
			caldata[2] = np.uint8(calB >> 8)
			caldata[3] = np.uint8(calB & 0x00FF)
			calDate = bytearray(time.strftime("%Y%m%d"), "utf-8")

			# Write actual date to bytearray:
			i = 0
			for i in range(8):
				caldata[4 + i] = calDate[i]

			await self.client.write_gatt_char(Temperature.TEMP_CALIBRATION_DATA_CHAR_UUID, caldata, **kwargs)

			self.temp_CalibrationData_CalA = calA
			self.temp_CalibrationData_CalB = calB
			self.temp_CalibrationData_CalDate = calDate

			self.logger.info("[" + currentFuncName() + "] transmitted: "
				+ f"calA: {self.temp_CalibrationData_CalA}\t"
				+ f"calB: {self.temp_CalibrationData_CalB}\t"
				+ f"calDate: {self.temp_CalibrationData_CalDate}")

			return list((self.temp_CalibrationData_CalA, self.temp_CalibrationData_CalB)), self.temp_CalibrationData_CalDate

		except Exception as e:
			self.temp_CalibrationData_CalA = None
			self.temp_CalibrationData_CalB = None
			self.temp_CalibrationData_CalDate = None
			self.logger.error("[" + currentFuncName() + "] received exception: " + str(e))
			raise e
예제 #3
0
    async def get_genSens_TxPwrLvl(self, **kwargs):
        if self.genSens_TxPwrLvl_AdvScan is not None:
            return self.genSens_TxPwrLvl_AdvScan, self.genSens_TxPwrLvl_Conn

        try:
            data = await self.client.read_gatt_char(
                GenericSensor.GEN_SENS_TX_PWR_LVL_CHAR_UUID, **kwargs)

            self.genSens_TxPwrLvl_AdvScan = int(format(data[0]))
            self.genSens_TxPwrLvl_Conn = int(format(data[1]))

            pwrLvl = [
                "TX_PWR_LVL_NEG_18_DBM", "TX_PWR_LVL_NEG_12_DBM",
                "TX_PWR_LVL_NEG_6_DBM", "TX_PWR_LVL_NEG_3_DBM",
                "TX_PWR_LVL_NEG_2_DBM", "TX_PWR_LVL_NEG_1_DBM",
                "TX_PWR_LVL_0_DBM", "TX_PWR_LVL_3_DBM", "TX_PWR_LVL_MAX"
            ]

            self.logger.info(
                "[" + currentFuncName() + "] received: " +
                f"TxPwrLvl_AdvScan: {pwrLvl[self.genSens_TxPwrLvl_AdvScan-1]}\t"
                + f"TxPwrLvl_Conn: {pwrLvl[self.genSens_TxPwrLvl_Conn-1]}")

            return self.genSens_TxPwrLvl_AdvScan, self.genSens_TxPwrLvl_Conn

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #4
0
	async def get_temp_CalibrationData(self, **kwargs):
		if self.temp_CalibrationData_CalA is not None:
			return list((self.temp_CalibrationData_CalA, self.temp_CalibrationData_CalB)), self.temp_CalibrationData_CalDate

		try:
			caldata = await self.client.read_gatt_char(Temperature.TEMP_CALIBRATION_DATA_CHAR_UUID, **kwargs)

			self.temp_CalibrationData_CalA = struct.unpack('>H',caldata[:2])[0]
			self.temp_CalibrationData_CalB = struct.unpack('>h',caldata[2:4])[0]

			i = 0
			date = ""
			for i in range(4):
				date = date + str(chr(caldata[i + 4]))
			date = date + "/"
			for i in range(2):
				date = date + str(chr(caldata[i + 8]))
			date = date + "/"
			for i in range(2):
				date = date + str(chr(caldata[i + 10]))

			self.temp_CalibrationData_CalDate = date

			self.logger.info("[" + currentFuncName() + "] received: "
				+ f"calA: {self.temp_CalibrationData_CalA}\t"
				+ f"calB: {self.temp_CalibrationData_CalB}\t"
				+ f"calDate: {self.temp_CalibrationData_CalDate}")

			return list((self.temp_CalibrationData_CalA, self.temp_CalibrationData_CalB)), self.temp_CalibrationData_CalDate

		except Exception as e:
			self.logger.error("[" + currentFuncName() + "] received exception: " + str(e))
			raise e
예제 #5
0
	async def get_temp_Temperature(self, **kwargs):
		try:
			self._lock_Temperature = True
			data = await self._get_notify(Temperature.TEMP_TEMPERATURE_CHAR_UUID, **kwargs)
			self.temp_Temperature = struct.unpack('<f',data)[0]

			self.logger.info("[" + currentFuncName() + "] received: " + str(self.temp_Temperature))

			return self.temp_Temperature

		except Exception as e:
			self.logger.error("[" + currentFuncName() + "] received exception: " + str(e))
			raise e
예제 #6
0
    async def get_battery_BatteryLevel(self, **kwargs):
        try:
            data = await self._get_notify(
                Battery.BATTERY_BATTERY_LEVEL_CHAR_UUID, **kwargs)
            self.battery_BatteryLevel = int(format(data[0]))
            self.logger.info("[" + currentFuncName() + "] received: " +
                             str(self.battery_BatteryLevel))

            return self.battery_BatteryLevel

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #7
0
    async def get_genSens_Label(self, **kwargs):
        if self.genSens_Label is not None:
            return self.genSens_Label

        try:
            data = await self.client.read_gatt_char(
                GenericSensor.GEN_SENS_LABEL_CHAR_UUID, **kwargs)
            self.genSens_Label = data.decode("utf-8").strip(" ")
            self.logger.info("[" + currentFuncName() + "] received: " +
                             self.genSens_Label)
            return self.genSens_Label

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #8
0
    async def get_devInf_SerialNumber(self, **kwargs):
        if self.devInf_SerialNumber is not None:
            return self.devInf_SerialNumber

        try:
            data = await self.client.read_gatt_char(
                DeviceInformation.DEV_INF_SERIAL_NUMBER_CHAR_UUID, **kwargs)
            self.devInf_SerialNumber = data.decode("utf-8").strip(" ")
            self.logger.info("[" + currentFuncName() + "] received: " +
                             self.devInf_SerialNumber)

            return self.devInf_SerialNumber

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #9
0
    async def get_devInf_PNP_ID(self, **kwargs):
        if self.devInf_PNP_ID is not None:
            return self.devInf_PNP_ID

        try:
            data = await self.client.read_gatt_char(
                DeviceInformation.DEV_INF_PNP_ID_CHAR_UUID, **kwargs)
            self.devInf_PNP_ID = data  # Has to be formated
            self.logger.info("[" + currentFuncName() + "] received: " +
                             str(self.devInf_PNP_ID))

            return self.devInf_PNP_ID

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #10
0
    async def get_devInf_HardwareRevision(self, **kwargs):
        if self.devInf_HardwareRevision is not None:
            return self.devInf_HardwareRevision

        try:
            data = await self.client.read_gatt_char(
                DeviceInformation.DEV_INF_HARDWARE_REVISION_CHAR_UUID,
                **kwargs)
            self.devInf_HardwareRevision = data.decode("utf-8").strip(" ")
            self.logger.info("[" + currentFuncName() + "] received: " +
                             self.devInf_HardwareRevision)

            return self.devInf_HardwareRevision

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #11
0
    async def get_devInf_ManufacturerName(self, **kwargs):
        if self.devInf_ManufacturerName is not None:
            return self.devInf_ManufacturerName

        try:
            data = await self.client.read_gatt_char(
                DeviceInformation.DEV_INF_MANUFACTURER_NAME_CHAR_UUID,
                **kwargs)
            self.devInf_ManufacturerName = data.decode("utf-8").strip(" ")
            self.logger.info("[" + currentFuncName() + "] received: " +
                             self.devInf_ManufacturerName)

            return self.devInf_ManufacturerName

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #12
0
    async def set_genSens_Label(self, label, **kwargs):
        if len(label) <= 64:
            newLabel = label
        else:
            newLabel = label[:64]

        bytelist = bytearray(newLabel, "utf-8")

        try:
            data = await self.client.write_gatt_char(
                GenericSensor.GEN_SENS_LABEL_CHAR_UUID, bytelist, **kwargs)
            self.genSens_Label = newLabel
            self.logger.info("[" + currentFuncName() + "] transmitted: " +
                             self.genSens_Label)
            return self.genSens_Label

        except Exception as e:
            self.genSens_Label = None
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #13
0
    async def set_genSens_AdvMode(self, advMode, **kwargs):
        try:
            assert (advMode >= self.ADV_MODE_1
                    and advMode <= self.ADV_MODE_4), (
                        "Advertisement Mode has to be between 1 and 4")

            data = bytearray(uint8(advMode))

            await self.client.write_gatt_char(
                GenericSensor.GEN_SENS_ADV_MODE_CHAR_UUID, data, **kwargs)

            self.genSens_AdvMode = advMode
            if self.genSens_AdvMode == self.ADV_MODE_1:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_1 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] transmitted: ADV_MODE_1")
            elif self.genSens_AdvMode == self.ADV_MODE_2:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_2 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] transmitted: ADV_MODE_2")
            elif self.genSens_AdvMode == self.ADV_MODE_3:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_3 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] transmitted: ADV_MODE_3")
            elif self.genSens_AdvMode == self.ADV_MODE_4:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_4 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] transmitted: ADV_MODE_4")
            else:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_4 + self.connTimeout_plus
                self.logger.warning("[" + currentFuncName() +
                                    "] transmitted unexpected value: " +
                                    str(self.genSens_AdvMode))

            return self.genSens_AdvMode

        except Exception as e:
            self.genSens_AdvMode = None
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e
예제 #14
0
    async def get_genSens_AdvMode(self, **kwargs):
        if self.genSens_AdvMode is not None:
            return self.genSens_AdvMode

        try:
            data = await self.client.read_gatt_char(
                GenericSensor.GEN_SENS_ADV_MODE_CHAR_UUID, **kwargs)

            self.genSens_AdvMode = int(format(data[0]))

            if self.genSens_AdvMode == self.ADV_MODE_1:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_1 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] received: ADV_MODE_1")
            elif self.genSens_AdvMode == self.ADV_MODE_2:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_2 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] received: ADV_MODE_2")
            elif self.genSens_AdvMode == self.ADV_MODE_3:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_3 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] received: ADV_MODE_3")
            elif self.genSens_AdvMode == self.ADV_MODE_4:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_4 + self.connTimeout_plus
                self.logger.info("[" + currentFuncName() +
                                 "] received: ADV_MODE_4")
            else:
                self.connTimeout = self.MAX_ADV_INTERVAL_MODE_4 + self.connTimeout_plus
                self.logger.warning("[" + currentFuncName() +
                                    "] received unexpected result: " +
                                    str(self.genSens_AdvMode))

            return self.genSens_AdvMode

        except Exception as e:
            self.logger.error("[" + currentFuncName() +
                              "] received exception: " + str(e))
            raise e