Commit 312f5c39 authored by Karol Hennessy's avatar Karol Hennessy

patient id added

parent b9276fda
...@@ -54,6 +54,7 @@ void UILoop::receiveCommands() ...@@ -54,6 +54,7 @@ void UILoop::receiveCommands()
personal_data_format pers; personal_data_format pers;
_pl_receive.getPayload(reinterpret_cast<void*>(&pers)); _pl_receive.getPayload(reinterpret_cast<void*>(&pers));
strcpy(_personal.name, pers.name); strcpy(_personal.name, pers.name);
strcpy(_personal.patient_id, pers.patient_id);
_personal.age = pers.age; _personal.age = pers.age;
_personal.sex = pers.sex; _personal.sex = pers.sex;
_personal.height = pers.height; _personal.height = pers.height;
...@@ -333,6 +334,7 @@ void UILoop::reportPersonal() ...@@ -333,6 +334,7 @@ void UILoop::reportPersonal()
_personal_data.timestamp = static_cast<uint32_t>(tnow); _personal_data.timestamp = static_cast<uint32_t>(tnow);
strcpy(_personal_data.name, _personal.name); strcpy(_personal_data.name, _personal.name);
strcpy(_personal_data.patient_id, _personal.patient_id);
_personal_data.age = _personal.age ; _personal_data.age = _personal.age ;
_personal_data.sex = _personal.sex ; _personal_data.sex = _personal.sex ;
_personal_data.height = _personal.height; _personal_data.height = _personal.height;
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <Arduino_Due_pinout.h> #include <Arduino_Due_pinout.h>
#endif #endif
#define HEV_FORMAT_VERSION 0xB4 #define HEV_FORMAT_VERSION 0xB5
// //
const float MAX_VALVE_FRAC_OPEN = 0.74; const float MAX_VALVE_FRAC_OPEN = 0.74;
...@@ -433,6 +433,7 @@ struct personal_data_format { ...@@ -433,6 +433,7 @@ struct personal_data_format {
uint8_t payload_type = PAYLOAD_TYPE::PERSONAL; uint8_t payload_type = PAYLOAD_TYPE::PERSONAL;
char name[60]; char name[60];
char patient_id[20];
uint8_t age; uint8_t age;
char sex; char sex;
uint8_t height; uint8_t height;
...@@ -715,6 +716,7 @@ struct cycle_readings{ ...@@ -715,6 +716,7 @@ struct cycle_readings{
struct personal_details{ struct personal_details{
char name[60]; char name[60];
char patient_id[20];
uint8_t age; uint8_t age;
char sex; char sex;
uint8_t height; uint8_t height;
......
...@@ -206,7 +206,7 @@ class HEVVersionError(Exception): ...@@ -206,7 +206,7 @@ class HEVVersionError(Exception):
@dataclass @dataclass
class PayloadFormat(): class PayloadFormat():
# class variables excluded from init args and output dict # class variables excluded from init args and output dict
_RPI_VERSION: ClassVar[int] = field(default=0xB4, init=False, repr=False) _RPI_VERSION: ClassVar[int] = field(default=0xB5, init=False, repr=False)
_dataStruct: ClassVar[Any] = field(default=Struct("<BIB"), init=False, repr=False) _dataStruct: ClassVar[Any] = field(default=Struct("<BIB"), init=False, repr=False)
_byteArray: ClassVar[bytearray] = field(default=None, init=False, repr=False) _byteArray: ClassVar[bytearray] = field(default=None, init=False, repr=False)
...@@ -682,14 +682,15 @@ class TargetFormat(PayloadFormat): ...@@ -682,14 +682,15 @@ class TargetFormat(PayloadFormat):
# ======================================= # =======================================
@dataclass @dataclass
class PersonalFormat(PayloadFormat): class PersonalFormat(PayloadFormat):
_dataStruct = Struct("<BIB60sBcBB") _dataStruct = Struct("<BIB60s20sBcBB")
payload_type: PAYLOAD_TYPE = PAYLOAD_TYPE.PERSONAL payload_type: PAYLOAD_TYPE = PAYLOAD_TYPE.PERSONAL
name : str = "" name : str = ""
age : int = 0 patient_id : str = ""
sex : str = "" age : int = 0
height : int = 0 sex : str = ""
weight : int = 0 height : int = 0
weight : int = 0
# for receiving DataFormat from microcontroller # for receiving DataFormat from microcontroller
# fill the struct from a byteArray, # fill the struct from a byteArray,
...@@ -698,11 +699,13 @@ class PersonalFormat(PayloadFormat): ...@@ -698,11 +699,13 @@ class PersonalFormat(PayloadFormat):
#logging.info(binascii.hexlify(byteArray)) #logging.info(binascii.hexlify(byteArray))
tmp_payload_type = 0 tmp_payload_type = 0
tmp_name = None tmp_name = None
tmp_id = None
tmp_sex = None tmp_sex = None
(self.version, (self.version,
self.timestamp, self.timestamp,
tmp_payload_type, tmp_payload_type,
tmp_name, tmp_name,
tmp_id,
self.age, self.age,
tmp_sex, tmp_sex,
self.height, self.height,
...@@ -711,6 +714,7 @@ class PersonalFormat(PayloadFormat): ...@@ -711,6 +714,7 @@ class PersonalFormat(PayloadFormat):
self.checkVersion() self.checkVersion()
self.payload_type = PAYLOAD_TYPE(tmp_payload_type) self.payload_type = PAYLOAD_TYPE(tmp_payload_type)
self.name = tmp_name.decode().rstrip('\0') self.name = tmp_name.decode().rstrip('\0')
self.patient_id = tmp_id.decode().rstrip('\0')
self.sex = tmp_sex.decode() self.sex = tmp_sex.decode()
self._byteArray = byteArray self._byteArray = byteArray
# ======================================= # =======================================
......
...@@ -42,7 +42,7 @@ class Dependant(object): ...@@ -42,7 +42,7 @@ class Dependant(object):
if payload.getType() == PAYLOAD_TYPE.DATA.value: if payload.getType() == PAYLOAD_TYPE.DATA.value:
#logging.info(f"payload received: {payload}") #logging.info(f"payload received: {payload}")
logging.info(f"payload received: {payload.timestamp} p {payload.pressure_patient:3.2f} f {payload.flow:3.3f} base {payload.volume:3.3f} d {payload.flow - payload.volume:3.3f} {payload.fsm_state}") #logging.info(f"payload received: {payload.timestamp} p {payload.pressure_patient:3.2f} f {payload.flow:3.3f} base {payload.volume:3.3f} d {payload.flow - payload.volume:3.3f} {payload.fsm_state}")
#logging.info(f"Fsm state: {payload.fsm_state}") #logging.info(f"Fsm state: {payload.fsm_state}")
fsm = payload.fsm_state fsm = payload.fsm_state
#if payload.getType() == PAYLOAD_TYPE.IVT.value: #if payload.getType() == PAYLOAD_TYPE.IVT.value:
...@@ -57,8 +57,8 @@ class Dependant(object): ...@@ -57,8 +57,8 @@ class Dependant(object):
# logging.info(f"payload received: {payload} {fsm}") # logging.info(f"payload received: {payload} {fsm}")
#if payload.getType() == PAYLOAD_TYPE.DEBUG.value: #if payload.getType() == PAYLOAD_TYPE.DEBUG.value:
# logging.info(f" PID {payload.kp:3.6f} {payload.ki:3.6f} {payload.kd:3.6f} {payload.proportional:3.6f} {payload.integral:3.6f} {payload.derivative:3.6f} {payload.valve_duty_cycle:3.6f} {payload.target_pressure:3.6f} {payload.process_pressure:3.6f} fsm {fsm}") # logging.info(f" PID {payload.kp:3.6f} {payload.ki:3.6f} {payload.kd:3.6f} {payload.proportional:3.6f} {payload.integral:3.6f} {payload.derivative:3.6f} {payload.valve_duty_cycle:3.6f} {payload.target_pressure:3.6f} {payload.process_pressure:3.6f} fsm {fsm}")
#if payload.getType() == PAYLOAD_TYPE.PERSONAL.value: if payload.getType() == PAYLOAD_TYPE.PERSONAL.value:
# logging.info(f"payload received: {payload} ") logging.info(f"payload received: {payload} ")
#if payload.getType() == PAYLOAD_TYPE.LOGMSG.value: #if payload.getType() == PAYLOAD_TYPE.LOGMSG.value:
# logging.info(f"LOGMSG {payload.timestamp}:{payload.message} {fsm}") # logging.info(f"LOGMSG {payload.timestamp}:{payload.message} {fsm}")
#if payload.getType() == PAYLOAD_TYPE.TARGET.value: #if payload.getType() == PAYLOAD_TYPE.TARGET.value:
...@@ -81,9 +81,9 @@ def send_cmd(cmd_type, cmd_code, param=0.0): ...@@ -81,9 +81,9 @@ def send_cmd(cmd_type, cmd_code, param=0.0):
else: else:
return cmd return cmd
def send_personal(name, age, sex, height, weight): def send_personal(name, patient_id, age, sex, height, weight):
try: try:
cmd = PersonalFormat(name=name.encode(), age=int(age), sex=sex.encode(), height=int(height), weight=int(weight)) cmd = PersonalFormat(name=name.encode(), patient_id=patient_id.encode(), age=int(age), sex=sex.encode(), height=int(height), weight=int(weight))
logging.info(f' payload sent {cmd}') logging.info(f' payload sent {cmd}')
comms.writePayload(cmd) comms.writePayload(cmd)
except Exception as e: except Exception as e:
...@@ -102,7 +102,7 @@ async def commsDebug(): ...@@ -102,7 +102,7 @@ async def commsDebug():
#await asyncio.sleep(10) #await asyncio.sleep(10)
#print('send personal info') #print('send personal info')
#send_personal("Jessica Jones", 29, 'F', 175, 58) send_personal("Jessica Jones", 'abc1234', 29, 'F', 175, 58)
#send_cmd(cmd_type="GET_THRESHOLD_MAX", cmd_code="APNEA") #send_cmd(cmd_type="GET_THRESHOLD_MAX", cmd_code="APNEA")
#await asyncio.sleep(1) #await asyncio.sleep(1)
...@@ -122,10 +122,10 @@ async def commsDebug(): ...@@ -122,10 +122,10 @@ async def commsDebug():
#print('set curr rr=11 ') #print('set curr rr=11 ')
#send_cmd(cmd_type="SET_TARGET_CURRENT", cmd_code="RESPIRATORY_RATE", param=11.0) #send_cmd(cmd_type="SET_TARGET_CURRENT", cmd_code="RESPIRATORY_RATE", param=11.0)
send_cmd(cmd_type="SET_MODE", cmd_code="PC_PSV", param=1) # send_cmd(cmd_type="SET_MODE", cmd_code="PC_PSV", param=1)
send_cmd(cmd_type="SET_TARGET_PC_PSV", cmd_code="INHALE_TRIGGER_THRESHOLD", param=1) # send_cmd(cmd_type="SET_TARGET_PC_PSV", cmd_code="INHALE_TRIGGER_THRESHOLD", param=1)
send_cmd(cmd_type="SET_TARGET_PC_PSV", cmd_code="EXHALE_TRIGGER_THRESHOLD", param=25) # send_cmd(cmd_type="SET_TARGET_PC_PSV", cmd_code="EXHALE_TRIGGER_THRESHOLD", param=25)
send_cmd(cmd_type="SET_TARGET_CURRENT", cmd_code="RESPIRATORY_RATE", param=5.0) # send_cmd(cmd_type="SET_TARGET_CURRENT", cmd_code="RESPIRATORY_RATE", param=5.0)
#await asyncio.sleep(1) #await asyncio.sleep(1)
#print('get targets pcac, current') #print('get targets pcac, current')
#send_cmd(cmd_type="GET_TARGETS", cmd_code="PC_AC", param=0) #send_cmd(cmd_type="GET_TARGETS", cmd_code="PC_AC", param=0)
...@@ -153,9 +153,10 @@ async def commsDebug(): ...@@ -153,9 +153,10 @@ async def commsDebug():
#send_cmd(cmd_type="GET_TARGETS", cmd_code="CPAP", param=0) #send_cmd(cmd_type="GET_TARGETS", cmd_code="CPAP", param=0)
#send_cmd(cmd_type="GET_TARGETS", cmd_code="TEST", param=0) #send_cmd(cmd_type="GET_TARGETS", cmd_code="TEST", param=0)
#send_cmd(cmd_type="GET_TARGETS", cmd_code="CURRENT", param=0) #send_cmd(cmd_type="GET_TARGETS", cmd_code="CURRENT", param=0)
cmd = send_cmd(cmd_type="GENERAL", cmd_code="START", param=0) #cmd = send_cmd(cmd_type="GENERAL", cmd_code="START", param=0)
cmd = send_cmd(cmd_type="GENERAL", cmd_code="GET_PERSONAL", param=0)
print('send start') print('send start')
#print('sent inhale + exhale trigger -> 1') #print('sent inhale + exhale trigger -> 1')
while True: while True:
await asyncio.sleep(1) await asyncio.sleep(1)
#print("get targets") #print("get targets")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment