Add getDeviceFromClass
This commit is contained in:
		| @@ -317,26 +317,38 @@ void initializeDevices() | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | DeviceBase* getDeviceFromClass(uint8_t class_type) | ||||||
|  | { | ||||||
|  |   switch (class_type) | ||||||
|  |   { | ||||||
|  |     case 0: | ||||||
|  |       return new Device; | ||||||
|  |       break; | ||||||
|  |     case 1: | ||||||
|  |       return new AnalogInput; | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|  |       return new Device; | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| DeviceBase* getDevice(uint8_t pointer) | DeviceBase* getDevice(uint8_t pointer) | ||||||
| { | { | ||||||
|   uint8_t class_type = configuration_memory[pointer]; |   uint8_t class_type = configuration_memory[pointer]; | ||||||
|  |   DeviceBase* device = getDeviceFromClass(class_type); | ||||||
|   if (class_type == 0) |   if (class_type == 0) | ||||||
|   { |   { | ||||||
|     DeviceBase* device = new Device; |  | ||||||
|     device->class_type = 0; |     device->class_type = 0; | ||||||
|     device->sensor_type = 0xFF; |     device->sensor_type = 0xFF; | ||||||
|     device->pin = 0xFF; |     device->pin = 0xFF; | ||||||
|     return device; |  | ||||||
|   } |   } | ||||||
|   if (class_type == 1) |   else | ||||||
|   { |   { | ||||||
|     DeviceBase* device = new AnalogInput; |     memcpy(reinterpret_cast<uint8_t*>(device) + 4, &configuration_memory[pointer], device->size()); | ||||||
|     //memcpy(device + 4, &configuration_memory[pointer], sizeof(AnalogInput) - 4); // There is some 4 bytes extra at the beginning |  | ||||||
|     memcpy(reinterpret_cast<uint8_t*>(device) + 4, &configuration_memory[pointer], sizeof(AnalogInput) - 4); // There is some 4 bytes extra at the beginning |  | ||||||
|     return device; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return new Device; |   return device; | ||||||
| } | } | ||||||
|  |  | ||||||
| void storeDevice(uint8_t pointer, DeviceBase* device) | void storeDevice(uint8_t pointer, DeviceBase* device) | ||||||
|   | |||||||
| @@ -183,6 +183,7 @@ void errorBlink(int n); // Quickly blink n times | |||||||
| bool send(uint8_t data[], uint8_t len); | bool send(uint8_t data[], uint8_t len); | ||||||
| bool receive(); | bool receive(); | ||||||
| void initializeDevices(); | void initializeDevices(); | ||||||
|  | DeviceBase* getDeviceFromClass(uint8_t class_type); | ||||||
| DeviceBase* getDevice(uint8_t pointer); // Gets the device at the specified location from cfgmem | DeviceBase* getDevice(uint8_t pointer); // Gets the device at the specified location from cfgmem | ||||||
| void storeDevice(uint8_t pointer, DeviceBase* device); // Stores a device at the specified location in cfgmem (not in flash) | void storeDevice(uint8_t pointer, DeviceBase* device); // Stores a device at the specified location in cfgmem (not in flash) | ||||||
| void loopMN(); | void loopMN(); | ||||||
|   | |||||||
| @@ -94,6 +94,7 @@ class MultiNode: | |||||||
| 			self.devices[rx_id] = {"last_message_id": msg_id} | 			self.devices[rx_id] = {"last_message_id": msg_id} | ||||||
|  |  | ||||||
| 		self.decode_packet(self.devices[rx_id], data) | 		self.decode_packet(self.devices[rx_id], data) | ||||||
|  | 		self.print_data() | ||||||
|  |  | ||||||
| 		# print(f"{tx_id} #{msg_id}: {decode_packet(data):.3f} V, {payload.rssi} dB(?) RSSI, {payload.snr} dB(?) SNR {(time.clock_gettime_ns(0)) / 1e9}") | 		# print(f"{tx_id} #{msg_id}: {decode_packet(data):.3f} V, {payload.rssi} dB(?) RSSI, {payload.snr} dB(?) SNR {(time.clock_gettime_ns(0)) / 1e9}") | ||||||
| 		# print(f"{tx_id} #{msg_id}: {data.hex()} {self.decode_packet(data)}, {payload.rssi} dB(?) RSSI, {payload.snr} dB(?) SNR {(time.clock_gettime_ns(0)) / 1e9}") | 		# print(f"{tx_id} #{msg_id}: {data.hex()} {self.decode_packet(data)}, {payload.rssi} dB(?) RSSI, {payload.snr} dB(?) SNR {(time.clock_gettime_ns(0)) / 1e9}") | ||||||
| @@ -116,7 +117,6 @@ class MultiNode: | |||||||
|  |  | ||||||
| 		self.lora.send(payload, 255) | 		self.lora.send(payload, 255) | ||||||
| 		self.lora.set_mode_rx() | 		self.lora.set_mode_rx() | ||||||
| 		self.print_data() |  | ||||||
|  |  | ||||||
| 	def print_data(self): | 	def print_data(self): | ||||||
| 		for device_id in self.devices: | 		for device_id in self.devices: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user