Difference between revisions of "Pseudo-Medical Monitor Code CONFIGURATION STUFF"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
− | + | == Self test of device == | |
+ | |||
<nowiki> | <nowiki> | ||
Revision as of 20:57, 11 December 2021
== Self test of device ==
char * I2C_Device_Name(int I2C_Bus, byte I2C_Address) { switch(I2C_Address) { case 0x26: if (I2C_Bus == 0) return("????"); if (I2C_Bus == 1) return("ECG w/ NPXL"); break; case 0x29: return("VL53L0X"); break; case 0x57: return("MAX30102"); break; case 0x5A: return("MLX9164"); break; case 0x68: if (I2C_Bus == 0) return("????"); if (I2C_Bus 1) return("MPU6050 R"); break; case 0x69: if (I2C_Bus == 0) return("AMG8833"); if (I2C_Bus == 1) return("MPU6050 G"); break; case 0x70: return("TCA9548A"); case 0x38: return("PCF8574"); break; default: return("????"); break; } } int CNFG_x_offset = 0; int CNFG_y_offset = 0; int CNFG_x_width = 128; int CNFG_y_height = 160; void ConfigurationMainUnit() { byte comm_error, address; int nDevices; int box_top = CNFG_y_offset; int box_bottom = box_top + CNFG_y_height; int box_left = CNFG_x_offset; int box_right = box_left + CNFG_x_width; int box_width = CNFG_x_width; int box_height = CNFG_y_height; int I2C_text_y_offset = 20; int text_x_offset = 5; int text_y_offset = 10; int text_y_spacing = 8; char I2CLabel[16]="--------------"; DrawScreenCompartment(box_left,box_top,box_width,box_height,COMMON_BLUE,COMMON_WHITE); DrawScreenText(box_left+20,box_top+4,"Main Unit",COMMON_YELLOW,COMMON_BLUE); DrawScreenText(box_left+10,I2C_text_y_offset,"I2C Scan...",COMMON_YELLOW,COMMON_BLUE); DrawScreenText(box_left+10,box_top+I2C_text_y_offset+8,"HEX",COMMON_YELLOW,COMMON_BLUE); DrawScreenText(box_left+40,box_top+I2C_text_y_offset+8,"Device",COMMON_YELLOW,COMMON_BLUE); Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); comm_error = Wire.endTransmission(); if (comm_error == 0) { nDevices++; Serial.print("I2C device found at address 0x"); if (address<16) { Serial.print("0"); } DrawScreenText(box_left+10,box_top+I2C_text_y_offset+16+(nDevices*8),String(address,HEX),COMMON_YELLOW,COMMON_BLUE); Serial.println(address,HEX); DrawScreenText(box_left+40,box_top+I2C_text_y_offset+16+(nDevices*8),I2C_Device_Name(0, address),COMMON_YELLOW,COMMON_BLUE); } else if (comm_error == 4) { Serial.print("Unknown error at address 0x"); if (address<16) { Serial.print("0"); } Serial.println(address,HEX); } } if (nDevices == 0) { Serial.println("No I2C devices found!\n"); } else { Serial.println("done\n"); } } void ConfigurationPort(int port_selection) { byte comm_error, address; int nDevices; int box_top = CNFG_y_offset; int box_bottom = box_top + CNFG_y_height; int box_left = CNFG_x_offset; int box_right = box_left + CNFG_x_width; int box_width = CNFG_x_width; int box_height = CNFG_y_height; int I2C_text_y_offset = 28; int text_x_offset = 5; int text_y_offset = 10; int text_y_spacing = 8; char I2CLabel[16]="--------------"; DrawScreenCompartment(box_left,box_top,box_width,box_height,COMMON_CYAN,COMMON_RED); DrawScreenText(box_left+20,box_top+4,"Port "+String(port_selection),COMMON_BLACK,COMMON_CYAN); DrawScreenText(box_left+20,box_top+12,Port_Type_Label[Port_Definitions.Port_Type[port_selection]],COMMON_BLACK,COMMON_CYAN); DrawScreenText(box_left+10,box_top+I2C_text_y_offset,"I2C Scan...",COMMON_BLACK,COMMON_CYAN); DrawScreenText(box_left+10,box_top+I2C_text_y_offset+8,"HEX",COMMON_BLACK,COMMON_CYAN); DrawScreenText(box_left+40,box_top+I2C_text_y_offset+8,"Device",COMMON_BLACK,COMMON_CYAN); Serial.println("Scanning..."); nDevices = 0; I2CMux.openChannel(port_selection); for(address = 1; address < 127; address++ ) { Wire1.beginTransmission(address); comm_error = Wire1.endTransmission(); if (comm_error == 0) { nDevices++; Serial.print("I2C device found at address 0x"); if (address<16) { Serial.print("0"); } DrawScreenText(box_left+10,box_top+I2C_text_y_offset+16+(nDevices*8),String(address,HEX),COMMON_BLACK,COMMON_CYAN); Serial.println(address,HEX); DrawScreenText(box_left+40,box_top+I2C_text_y_offset+16+(nDevices*8),I2C_Device_Name(1, address),COMMON_BLACK,COMMON_CYAN); } else if (comm_error==4) { Serial.print("Unknown error at address 0x"); if (address<16) { Serial.print("0"); } Serial.println(address,HEX); } } if (nDevices == 0) { Serial.println("No I2C devices found!\n"); } else { Serial.println("done\n"); } I2CMux.closeChannel(port_selection); } void ConfigurationScans() { int configuration_select = 0; bool refresh_screen = true; int encoder_A = 0; int encoder_B = 0; while(configuration_select != -1) { switch(configuration_select) { case 0: if (refresh_screen) { ConfigurationMainUnit(); Controls.reset_All(); } refresh_screen = false; break; case 1: if (refresh_screen) ConfigurationPort(0); refresh_screen = false; break; case 2: if (refresh_screen) ConfigurationPort(1); refresh_screen = false; break; case 3: if (refresh_screen) ConfigurationPort(2); refresh_screen = false; break; case 4: if (refresh_screen) ConfigurationPort(3); refresh_screen = false; break; } if (Controls.pcf_event) { encoder_A = Controls.encoder_A_Dir(); encoder_B = Controls.encoder_B_Dir(); if (encoder_B == 1) { if (configuration_select < 4) ++configuration_select; refresh_screen = true; } if (encoder_B == -1) { if (configuration_select > 0) --configuration_select; refresh_screen = true; } if (Controls.encoder_A_Switch() = = 1) { configuration_select = -1; } Controls.pcf_event = false; // Cleans the interrupt status delay(20); } } }