From 18cfb42f3c2137c36d21a82b4209ba4c9e01f863 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 27 May 2019 10:33:12 +0300 Subject: MERGE --- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index ab5075ab9..66d6baed5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -594,7 +594,7 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) MotorControlConfig[index].m_calculatedError = (-1*MotorControlConfig[index].m_calculatedError); }*/ calculated_speed = (1-MotorControlConfig[index].m_calculatedError)*OriginalMotorSpd_2PPS[index]; - if (abs(calculated_speed-CurrentControlledSpeed[index])> MotorControlConfig[index].m_ingnoreValue) + if (fabs(calculated_speed-CurrentControlledSpeed[index])> MotorControlConfig[index].m_ingnoreValue) { CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); -- cgit v1.3.1 From 1dfd14ae3fbf868e8992420127a9cf3e6318e5ff Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 9 Jul 2019 17:14:59 +0300 Subject: Version 1.4.2.0 - infrastructure for IFS, improved flash handling, thread unloading --- Software/Embedded_SW/Embedded/.cproject | 2 +- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 2 +- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Communication/Container.c | 9 + .../Communication/PMR/Common/MessageType.pb-c.c | 206 ++++---- .../Communication/PMR/Common/MessageType.pb-c.h | 8 + .../Communication/PMR/Diagnostics/Cartridge.pb-c.c | 118 +++++ .../Communication/PMR/Diagnostics/Cartridge.pb-c.h | 77 +++ .../PMR/Diagnostics/CartridgeAction.pb-c.c | 37 ++ .../PMR/Diagnostics/CartridgeAction.pb-c.h | 43 ++ .../PMR/Diagnostics/CartridgeSlot.pb-c.c | 39 ++ .../PMR/Diagnostics/CartridgeSlot.pb-c.h | 44 ++ .../PMR/Diagnostics/CartridgeTagContent.pb-c.c | 417 +++++++++++++++ .../PMR/Diagnostics/CartridgeTagContent.pb-c.h | 112 ++++ .../Diagnostics/CartridgeValidationRequest.pb-c.c | 105 ++++ .../Diagnostics/CartridgeValidationRequest.pb-c.h | 75 +++ .../Diagnostics/CartridgeValidationResponse.pb-c.c | 105 ++++ .../Diagnostics/CartridgeValidationResponse.pb-c.h | 74 +++ .../Communication/PMR/Diagnostics/EventType.pb-c.c | 566 +++++++++++---------- .../Communication/PMR/Diagnostics/EventType.pb-c.h | 4 + .../StartCartridgesUpdateRequest.pb-c.c | 72 +++ .../StartCartridgesUpdateRequest.pb-c.h | 70 +++ .../StartCartridgesUpdateResponse.pb-c.c | 105 ++++ .../StartCartridgesUpdateResponse.pb-c.h | 75 +++ .../Diagnostics/StopCartridgesUpdateRequest.pb-c.c | 72 +++ .../Diagnostics/StopCartridgesUpdateRequest.pb-c.h | 70 +++ .../StopCartridgesUpdateResponse.pb-c.c | 72 +++ .../StopCartridgesUpdateResponse.pb-c.h | 70 +++ .../PMR/Hardware/HardwareMotor.pb-c.c | 123 ++++- .../PMR/Hardware/HardwareMotor.pb-c.h | 20 +- .../PMR/Hardware/HardwareMotorType.pb-c.c | 12 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 10 + Software/Embedded_SW/Embedded/Main.c | 1 + .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 2 + .../Embedded/Modules/General/GeneralHardware.c | 264 +++++----- .../Embedded/Modules/General/GeneralHardware.h | 4 +- .../Embedded_SW/Embedded/Modules/General/process.c | 75 ++- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 2 +- .../Embedded/Modules/IFS/RfidTagContent.h | 51 ++ Software/Embedded_SW/Embedded/Modules/IFS/ifs.c | 31 ++ Software/Embedded_SW/Embedded/Modules/IFS/ifs.h | 16 + .../Embedded_SW/Embedded/Modules/Thread/Thread.h | 3 +- .../Embedded/Modules/Thread/ThreadLoad.c | 80 ++- .../Embedded/Modules/Thread/Thread_init.c | 31 +- .../Embedded/Software Release Notes.txt | 8 + 45 files changed, 2824 insertions(+), 560 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.h create mode 100644 Software/Embedded_SW/Embedded/Modules/IFS/RfidTagContent.h create mode 100644 Software/Embedded_SW/Embedded/Modules/IFS/ifs.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IFS/ifs.h (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject index 0f253578d..6007737b7 100644 --- a/Software/Embedded_SW/Embedded/.cproject +++ b/Software/Embedded_SW/Embedded/.cproject @@ -170,7 +170,7 @@ - + diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 273dfb49d..77056213f 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -120,7 +120,6 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) } for (File_i = 0;File_in_filedescriptors;File_i++) { - CurrentRunningFile = 0; CurrentFileSize = -1; vme_index = 0; switch(VersionPackage->filedescriptors[File_i]->destination) @@ -156,6 +155,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) usnprintf(FullPath, 50, "%s%s%s", request->path,"/", VersionPackage->filedescriptors[File_i]->filename); Fresult = f_unlink("//SYSINFO//ALARMPRM.CFG"); Fresult |= f_rename (FullPath, "//SYSINFO//ALARMPRM.CFG"); + AlarmHandlingLoadFile(); CurrentRunningFile++; break; case VERSION_FILE_DESTINATION__GeneralHWConfigParams: diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index ba601e283..ad0191ab4 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,1,1}; +TangoVersion_t _gTangoVersion = {1,4,2,0}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index ca253c5be..86e1b06c4 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -424,6 +424,15 @@ void receive_callback(char* buffer, size_t length) case MESSAGE_TYPE__DispenserDataRequest: DispenserDataRequestFunc(requestContainer); break; + case MESSAGE_TYPE__StartCartridgesUpdateRequest: + LOG_ERROR (requestContainer->type,"MESSAGE_TYPE__StartCartridgesUpdateRequest"); + break; + case MESSAGE_TYPE__StopCartridgesUpdateRequest: + LOG_ERROR (requestContainer->type,"MESSAGE_TYPE__StopCartridgesUpdateRequest"); + break; + case MESSAGE_TYPE__CartridgeValidationResponse: + LOG_ERROR (requestContainer->type,"MESSAGE_TYPE__CartridgeValidationResponse"); + break; default: //unsupported message type !! LOG_ERROR (requestContainer->type,"unsupported message type"); diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c index 48bc98319..2ca8c9192 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c @@ -7,7 +7,7 @@ #endif #include "MessageType.pb-c.h" -static const ProtobufCEnumValue message_type__enum_values_by_number[207] = +static const ProtobufCEnumValue message_type__enum_values_by_number[215] = { { "None", "MESSAGE_TYPE__None", 0 }, { "ErrorResponse", "MESSAGE_TYPE__ErrorResponse", 1 }, @@ -126,6 +126,8 @@ static const ProtobufCEnumValue message_type__enum_values_by_number[207] = { "StartApplicationLogsResponse", "MESSAGE_TYPE__StartApplicationLogsResponse", 1010 }, { "StopApplicationLogsRequest", "MESSAGE_TYPE__StopApplicationLogsRequest", 1011 }, { "StopApplicationLogsResponse", "MESSAGE_TYPE__StopApplicationLogsResponse", 1012 }, + { "ColorProfileRequest", "MESSAGE_TYPE__ColorProfileRequest", 1013 }, + { "ColorProfileResponse", "MESSAGE_TYPE__ColorProfileResponse", 1014 }, { "StartDiagnosticsRequest", "MESSAGE_TYPE__StartDiagnosticsRequest", 2000 }, { "StartDiagnosticsResponse", "MESSAGE_TYPE__StartDiagnosticsResponse", 2001 }, { "MotorAbortHomingRequest", "MESSAGE_TYPE__MotorAbortHomingRequest", 2002 }, @@ -166,6 +168,12 @@ static const ProtobufCEnumValue message_type__enum_values_by_number[207] = { "SetBlowerStateResponse", "MESSAGE_TYPE__SetBlowerStateResponse", 2037 }, { "SetValveStateRequest", "MESSAGE_TYPE__SetValveStateRequest", 2038 }, { "SetValveStateResponse", "MESSAGE_TYPE__SetValveStateResponse", 2039 }, + { "StartCartridgesUpdateRequest", "MESSAGE_TYPE__StartCartridgesUpdateRequest", 2040 }, + { "StartCartridgesUpdateResponse", "MESSAGE_TYPE__StartCartridgesUpdateResponse", 2041 }, + { "StopCartridgesUpdateRequest", "MESSAGE_TYPE__StopCartridgesUpdateRequest", 2042 }, + { "StopCartridgesUpdateResponse", "MESSAGE_TYPE__StopCartridgesUpdateResponse", 2043 }, + { "CartridgeValidationRequest", "MESSAGE_TYPE__CartridgeValidationRequest", 2044 }, + { "CartridgeValidationResponse", "MESSAGE_TYPE__CartridgeValidationResponse", 2045 }, { "JobRequest", "MESSAGE_TYPE__JobRequest", 3000 }, { "JobResponse", "MESSAGE_TYPE__JobResponse", 3001 }, { "AbortJobRequest", "MESSAGE_TYPE__AbortJobRequest", 3002 }, @@ -218,107 +226,115 @@ static const ProtobufCEnumValue message_type__enum_values_by_number[207] = { "DispenserDataResponse", "MESSAGE_TYPE__DispenserDataResponse", 8001 }, }; static const ProtobufCIntRange message_type__value_ranges[] = { -{0, 0},{3, 2},{1000, 104},{2000, 117},{3000, 157},{4000, 167},{5000, 171},{6000, 175},{7000, 181},{8000, 205},{0, 207} +{0, 0},{3, 2},{1000, 104},{2000, 119},{3000, 165},{4000, 175},{5000, 179},{6000, 183},{7000, 189},{8000, 213},{0, 215} }; -static const ProtobufCEnumValueIndex message_type__enum_values_by_name[207] = +static const ProtobufCEnumValueIndex message_type__enum_values_by_name[215] = { - { "AbortJobRequest", 159 }, - { "AbortJobResponse", 160 }, - { "ActivateVersionRequest", 203 }, - { "ActivateVersionResponse", 204 }, + { "AbortJobRequest", 167 }, + { "AbortJobResponse", 168 }, + { "ActivateVersionRequest", 211 }, + { "ActivateVersionResponse", 212 }, { "CalculateRequest", 2 }, { "CalculateResponse", 3 }, - { "ConnectRequest", 177 }, - { "ConnectResponse", 178 }, - { "CreateRequest", 189 }, - { "CreateResponse", 190 }, - { "CurrentJobRequest", 163 }, - { "CurrentJobResponse", 164 }, - { "DeleteRequest", 191 }, - { "DeleteResponse", 192 }, + { "CartridgeValidationRequest", 163 }, + { "CartridgeValidationResponse", 164 }, + { "ColorProfileRequest", 117 }, + { "ColorProfileResponse", 118 }, + { "ConnectRequest", 185 }, + { "ConnectResponse", 186 }, + { "CreateRequest", 197 }, + { "CreateResponse", 198 }, + { "CurrentJobRequest", 171 }, + { "CurrentJobResponse", 172 }, + { "DeleteRequest", 199 }, + { "DeleteResponse", 200 }, { "DirectSynchronizationRequest", 109 }, { "DirectSynchronizationResponse", 110 }, - { "DisconnectRequest", 179 }, - { "DisconnectResponse", 180 }, - { "DispenserAbortHomingRequest", 127 }, - { "DispenserAbortHomingResponse", 128 }, - { "DispenserAbortJoggingRequest", 133 }, - { "DispenserAbortJoggingResponse", 134 }, - { "DispenserDataRequest", 205 }, - { "DispenserDataResponse", 206 }, - { "DispenserHomingRequest", 129 }, - { "DispenserHomingResponse", 130 }, - { "DispenserJoggingRequest", 131 }, - { "DispenserJoggingResponse", 132 }, + { "DisconnectRequest", 187 }, + { "DisconnectResponse", 188 }, + { "DispenserAbortHomingRequest", 129 }, + { "DispenserAbortHomingResponse", 130 }, + { "DispenserAbortJoggingRequest", 135 }, + { "DispenserAbortJoggingResponse", 136 }, + { "DispenserDataRequest", 213 }, + { "DispenserDataResponse", 214 }, + { "DispenserHomingRequest", 131 }, + { "DispenserHomingResponse", 132 }, + { "DispenserJoggingRequest", 133 }, + { "DispenserJoggingResponse", 134 }, { "ErrorResponse", 1 }, - { "ExecuteProcessRequest", 185 }, - { "ExecuteProcessResponse", 186 }, + { "ExecuteProcessRequest", 193 }, + { "ExecuteProcessResponse", 194 }, { "ExternalBridgeLoginRequest", 105 }, { "ExternalBridgeLoginResponse", 106 }, { "ExternalBridgeLogoutRequest", 107 }, { "ExternalBridgeLogoutResponse", 108 }, { "ExternalBridgeUdpDiscoveryPacket", 104 }, - { "FileChunkDownloadRequest", 199 }, - { "FileChunkDownloadResponse", 200 }, - { "FileChunkUploadRequest", 183 }, - { "FileChunkUploadResponse", 184 }, - { "FileDownloadRequest", 197 }, - { "FileDownloadResponse", 198 }, - { "FileUploadRequest", 181 }, - { "FileUploadResponse", 182 }, - { "GetFilesRequest", 195 }, - { "GetFilesResponse", 196 }, - { "GetStorageInfoRequest", 193 }, - { "GetStorageInfoResponse", 194 }, - { "JobRequest", 157 }, - { "JobResponse", 158 }, - { "KeepAliveRequest", 175 }, - { "KeepAliveResponse", 176 }, - { "KillProcessRequest", 187 }, - { "KillProcessResponse", 188 }, - { "MotorAbortHomingRequest", 119 }, - { "MotorAbortHomingResponse", 120 }, - { "MotorAbortJoggingRequest", 125 }, - { "MotorAbortJoggingResponse", 126 }, - { "MotorHomingRequest", 121 }, - { "MotorHomingResponse", 122 }, - { "MotorJoggingRequest", 123 }, - { "MotorJoggingResponse", 124 }, + { "FileChunkDownloadRequest", 207 }, + { "FileChunkDownloadResponse", 208 }, + { "FileChunkUploadRequest", 191 }, + { "FileChunkUploadResponse", 192 }, + { "FileDownloadRequest", 205 }, + { "FileDownloadResponse", 206 }, + { "FileUploadRequest", 189 }, + { "FileUploadResponse", 190 }, + { "GetFilesRequest", 203 }, + { "GetFilesResponse", 204 }, + { "GetStorageInfoRequest", 201 }, + { "GetStorageInfoResponse", 202 }, + { "JobRequest", 165 }, + { "JobResponse", 166 }, + { "KeepAliveRequest", 183 }, + { "KeepAliveResponse", 184 }, + { "KillProcessRequest", 195 }, + { "KillProcessResponse", 196 }, + { "MotorAbortHomingRequest", 121 }, + { "MotorAbortHomingResponse", 122 }, + { "MotorAbortJoggingRequest", 127 }, + { "MotorAbortJoggingResponse", 128 }, + { "MotorHomingRequest", 123 }, + { "MotorHomingResponse", 124 }, + { "MotorJoggingRequest", 125 }, + { "MotorJoggingResponse", 126 }, { "None", 0 }, { "OverrideDataBaseRequest", 111 }, { "OverrideDataBaseResponse", 112 }, { "ProgressRequest", 4 }, { "ProgressResponse", 5 }, - { "ResolveEventRequest", 143 }, - { "ResolveEventResponse", 144 }, - { "ResumeCurrentJobRequest", 165 }, - { "ResumeCurrentJobResponse", 166 }, - { "SetBlowerStateRequest", 153 }, - { "SetBlowerStateResponse", 154 }, - { "SetComponentValueRequest", 141 }, - { "SetComponentValueResponse", 142 }, - { "SetDigitalOutRequest", 135 }, - { "SetDigitalOutResponse", 136 }, - { "SetHeaterStateRequest", 151 }, - { "SetHeaterStateResponse", 152 }, - { "SetValveStateRequest", 155 }, - { "SetValveStateResponse", 156 }, + { "ResolveEventRequest", 145 }, + { "ResolveEventResponse", 146 }, + { "ResumeCurrentJobRequest", 173 }, + { "ResumeCurrentJobResponse", 174 }, + { "SetBlowerStateRequest", 155 }, + { "SetBlowerStateResponse", 156 }, + { "SetComponentValueRequest", 143 }, + { "SetComponentValueResponse", 144 }, + { "SetDigitalOutRequest", 137 }, + { "SetDigitalOutResponse", 138 }, + { "SetHeaterStateRequest", 153 }, + { "SetHeaterStateResponse", 154 }, + { "SetValveStateRequest", 157 }, + { "SetValveStateResponse", 158 }, { "StartApplicationLogsRequest", 113 }, { "StartApplicationLogsResponse", 114 }, - { "StartDebugLogRequest", 167 }, - { "StartDebugLogResponse", 168 }, - { "StartDiagnosticsRequest", 117 }, - { "StartDiagnosticsResponse", 118 }, - { "StartEventsNotificationRequest", 147 }, - { "StartEventsNotificationResponse", 148 }, + { "StartCartridgesUpdateRequest", 159 }, + { "StartCartridgesUpdateResponse", 160 }, + { "StartDebugLogRequest", 175 }, + { "StartDebugLogResponse", 176 }, + { "StartDiagnosticsRequest", 119 }, + { "StartDiagnosticsResponse", 120 }, + { "StartEventsNotificationRequest", 149 }, + { "StartEventsNotificationResponse", 150 }, { "StopApplicationLogsRequest", 115 }, { "StopApplicationLogsResponse", 116 }, - { "StopDebugLogRequest", 169 }, - { "StopDebugLogResponse", 170 }, - { "StopDiagnosticsRequest", 145 }, - { "StopDiagnosticsResponse", 146 }, - { "StopEventsNotificationRequest", 149 }, - { "StopEventsNotificationResponse", 150 }, + { "StopCartridgesUpdateRequest", 161 }, + { "StopCartridgesUpdateResponse", 162 }, + { "StopDebugLogRequest", 177 }, + { "StopDebugLogResponse", 178 }, + { "StopDiagnosticsRequest", 147 }, + { "StopDiagnosticsResponse", 148 }, + { "StopEventsNotificationRequest", 151 }, + { "StopEventsNotificationResponse", 152 }, { "StubAbortJobRequest", 100 }, { "StubAbortJobResponse", 101 }, { "StubCartridgeReadRequest", 6 }, @@ -417,18 +433,18 @@ static const ProtobufCEnumValueIndex message_type__enum_values_by_name[207] = { "StubTivaWriteRegResponse", 79 }, { "StubValveRequest", 30 }, { "StubValveResponse", 31 }, - { "SystemResetRequest", 173 }, - { "SystemResetResponse", 174 }, - { "ThreadAbortJoggingRequest", 139 }, - { "ThreadAbortJoggingResponse", 140 }, - { "ThreadJoggingRequest", 137 }, - { "ThreadJoggingResponse", 138 }, - { "UploadHardwareConfigurationRequest", 171 }, - { "UploadHardwareConfigurationResponse", 172 }, - { "UploadProcessParametersRequest", 161 }, - { "UploadProcessParametersResponse", 162 }, - { "ValidateVersionRequest", 201 }, - { "ValidateVersionResponse", 202 }, + { "SystemResetRequest", 181 }, + { "SystemResetResponse", 182 }, + { "ThreadAbortJoggingRequest", 141 }, + { "ThreadAbortJoggingResponse", 142 }, + { "ThreadJoggingRequest", 139 }, + { "ThreadJoggingResponse", 140 }, + { "UploadHardwareConfigurationRequest", 179 }, + { "UploadHardwareConfigurationResponse", 180 }, + { "UploadProcessParametersRequest", 169 }, + { "UploadProcessParametersResponse", 170 }, + { "ValidateVersionRequest", 209 }, + { "ValidateVersionResponse", 210 }, }; const ProtobufCEnumDescriptor message_type__descriptor = { @@ -437,9 +453,9 @@ const ProtobufCEnumDescriptor message_type__descriptor = "MessageType", "MessageType", "", - 207, + 215, message_type__enum_values_by_number, - 207, + 215, message_type__enum_values_by_name, 10, message_type__value_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h index 7fde64335..5ca19030f 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h @@ -137,6 +137,8 @@ typedef enum _MessageType { MESSAGE_TYPE__StartApplicationLogsResponse = 1010, MESSAGE_TYPE__StopApplicationLogsRequest = 1011, MESSAGE_TYPE__StopApplicationLogsResponse = 1012, + MESSAGE_TYPE__ColorProfileRequest = 1013, + MESSAGE_TYPE__ColorProfileResponse = 1014, MESSAGE_TYPE__StartDiagnosticsRequest = 2000, MESSAGE_TYPE__StartDiagnosticsResponse = 2001, MESSAGE_TYPE__MotorAbortHomingRequest = 2002, @@ -177,6 +179,12 @@ typedef enum _MessageType { MESSAGE_TYPE__SetBlowerStateResponse = 2037, MESSAGE_TYPE__SetValveStateRequest = 2038, MESSAGE_TYPE__SetValveStateResponse = 2039, + MESSAGE_TYPE__StartCartridgesUpdateRequest = 2040, + MESSAGE_TYPE__StartCartridgesUpdateResponse = 2041, + MESSAGE_TYPE__StopCartridgesUpdateRequest = 2042, + MESSAGE_TYPE__StopCartridgesUpdateResponse = 2043, + MESSAGE_TYPE__CartridgeValidationRequest = 2044, + MESSAGE_TYPE__CartridgeValidationResponse = 2045, MESSAGE_TYPE__JobRequest = 3000, MESSAGE_TYPE__JobResponse = 3001, MESSAGE_TYPE__AbortJobRequest = 3002, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.c new file mode 100644 index 000000000..fc27894ce --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.c @@ -0,0 +1,118 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: Cartridge.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "Cartridge.pb-c.h" +void cartridge__init + (Cartridge *message) +{ + static const Cartridge init_value = CARTRIDGE__INIT; + *message = init_value; +} +size_t cartridge__get_packed_size + (const Cartridge *message) +{ + assert(message->base.descriptor == &cartridge__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t cartridge__pack + (const Cartridge *message, + uint8_t *out) +{ + assert(message->base.descriptor == &cartridge__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t cartridge__pack_to_buffer + (const Cartridge *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &cartridge__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +Cartridge * + cartridge__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (Cartridge *) + protobuf_c_message_unpack (&cartridge__descriptor, + allocator, len, data); +} +void cartridge__free_unpacked + (Cartridge *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &cartridge__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor cartridge__field_descriptors[3] = +{ + { + "Slot", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_ENUM, + offsetof(Cartridge, has_slot), + offsetof(Cartridge, slot), + &cartridge_slot__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Tag", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(Cartridge, tag), + &cartridge_tag_content__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Index", + 3, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(Cartridge, has_index), + offsetof(Cartridge, index), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned cartridge__field_indices_by_name[] = { + 2, /* field[2] = Index */ + 0, /* field[0] = Slot */ + 1, /* field[1] = Tag */ +}; +static const ProtobufCIntRange cartridge__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor cartridge__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Cartridge", + "Cartridge", + "Cartridge", + "", + sizeof(Cartridge), + 3, + cartridge__field_descriptors, + cartridge__field_indices_by_name, + 1, cartridge__number_ranges, + (ProtobufCMessageInit) cartridge__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.h new file mode 100644 index 000000000..1f4446b48 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/Cartridge.pb-c.h @@ -0,0 +1,77 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: Cartridge.proto */ + +#ifndef PROTOBUF_C_Cartridge_2eproto__INCLUDED +#define PROTOBUF_C_Cartridge_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + +#include "CartridgeSlot.pb-c.h" +#include "CartridgeTagContent.pb-c.h" + +typedef struct _Cartridge Cartridge; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _Cartridge +{ + ProtobufCMessage base; + protobuf_c_boolean has_slot; + CartridgeSlot slot; + CartridgeTagContent *tag; + protobuf_c_boolean has_index; + int32_t index; +}; +#define CARTRIDGE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&cartridge__descriptor) \ + , 0, CARTRIDGE_SLOT__Ink, NULL, 0, 0 } + + +/* Cartridge methods */ +void cartridge__init + (Cartridge *message); +size_t cartridge__get_packed_size + (const Cartridge *message); +size_t cartridge__pack + (const Cartridge *message, + uint8_t *out); +size_t cartridge__pack_to_buffer + (const Cartridge *message, + ProtobufCBuffer *buffer); +Cartridge * + cartridge__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void cartridge__free_unpacked + (Cartridge *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*Cartridge_Closure) + (const Cartridge *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor cartridge__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_Cartridge_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.c new file mode 100644 index 000000000..b0a681376 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.c @@ -0,0 +1,37 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeAction.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "CartridgeAction.pb-c.h" +static const ProtobufCEnumValue cartridge_action__enum_values_by_number[2] = +{ + { "Inserted", "CARTRIDGE_ACTION__Inserted", 0 }, + { "Ejected", "CARTRIDGE_ACTION__Ejected", 1 }, +}; +static const ProtobufCIntRange cartridge_action__value_ranges[] = { +{0, 0},{0, 2} +}; +static const ProtobufCEnumValueIndex cartridge_action__enum_values_by_name[2] = +{ + { "Ejected", 1 }, + { "Inserted", 0 }, +}; +const ProtobufCEnumDescriptor cartridge_action__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "CartridgeAction", + "CartridgeAction", + "CartridgeAction", + "", + 2, + cartridge_action__enum_values_by_number, + 2, + cartridge_action__enum_values_by_name, + 1, + cartridge_action__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.h new file mode 100644 index 000000000..9664d8b1f --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeAction.pb-c.h @@ -0,0 +1,43 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeAction.proto */ + +#ifndef PROTOBUF_C_CartridgeAction_2eproto__INCLUDED +#define PROTOBUF_C_CartridgeAction_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + + + +/* --- enums --- */ + +typedef enum _CartridgeAction { + CARTRIDGE_ACTION__Inserted = 0, + CARTRIDGE_ACTION__Ejected = 1 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(CARTRIDGE_ACTION) +} CartridgeAction; + +/* --- messages --- */ + +/* --- per-message closures --- */ + + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCEnumDescriptor cartridge_action__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_CartridgeAction_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.c new file mode 100644 index 000000000..370c41dc2 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.c @@ -0,0 +1,39 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeSlot.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "CartridgeSlot.pb-c.h" +static const ProtobufCEnumValue cartridge_slot__enum_values_by_number[3] = +{ + { "Ink", "CARTRIDGE_SLOT__Ink", 0 }, + { "WasteMiddle", "CARTRIDGE_SLOT__WasteMiddle", 1 }, + { "WasteLower", "CARTRIDGE_SLOT__WasteLower", 2 }, +}; +static const ProtobufCIntRange cartridge_slot__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex cartridge_slot__enum_values_by_name[3] = +{ + { "Ink", 0 }, + { "WasteLower", 2 }, + { "WasteMiddle", 1 }, +}; +const ProtobufCEnumDescriptor cartridge_slot__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "CartridgeSlot", + "CartridgeSlot", + "CartridgeSlot", + "", + 3, + cartridge_slot__enum_values_by_number, + 3, + cartridge_slot__enum_values_by_name, + 1, + cartridge_slot__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.h new file mode 100644 index 000000000..8036073ba --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeSlot.pb-c.h @@ -0,0 +1,44 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeSlot.proto */ + +#ifndef PROTOBUF_C_CartridgeSlot_2eproto__INCLUDED +#define PROTOBUF_C_CartridgeSlot_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + + + +/* --- enums --- */ + +typedef enum _CartridgeSlot { + CARTRIDGE_SLOT__Ink = 0, + CARTRIDGE_SLOT__WasteMiddle = 1, + CARTRIDGE_SLOT__WasteLower = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(CARTRIDGE_SLOT) +} CartridgeSlot; + +/* --- messages --- */ + +/* --- per-message closures --- */ + + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCEnumDescriptor cartridge_slot__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_CartridgeSlot_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.c new file mode 100644 index 000000000..66c11df51 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.c @@ -0,0 +1,417 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeTagContent.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "CartridgeTagContent.pb-c.h" +void cartridge_tag_content__init + (CartridgeTagContent *message) +{ + static const CartridgeTagContent init_value = CARTRIDGE_TAG_CONTENT__INIT; + *message = init_value; +} +size_t cartridge_tag_content__get_packed_size + (const CartridgeTagContent *message) +{ + assert(message->base.descriptor == &cartridge_tag_content__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t cartridge_tag_content__pack + (const CartridgeTagContent *message, + uint8_t *out) +{ + assert(message->base.descriptor == &cartridge_tag_content__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t cartridge_tag_content__pack_to_buffer + (const CartridgeTagContent *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &cartridge_tag_content__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +CartridgeTagContent * + cartridge_tag_content__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (CartridgeTagContent *) + protobuf_c_message_unpack (&cartridge_tag_content__descriptor, + allocator, len, data); +} +void cartridge_tag_content__free_unpacked + (CartridgeTagContent *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &cartridge_tag_content__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor cartridge_tag_content__field_descriptors[26] = +{ + { + "UniqueId", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(CartridgeTagContent, has_uniqueid), + offsetof(CartridgeTagContent, uniqueid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "SerialNumber", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, serialnumber), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "FactoryId", + 3, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, factoryid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "FillingSystemId", + 4, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_fillingsystemid), + offsetof(CartridgeTagContent, fillingsystemid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ColorName", + 5, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, colorname), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ColorCategory", + 6, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_colorcategory), + offsetof(CartridgeTagContent, colorcategory), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ColorTypeRevision", + 7, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_colortyperevision), + offsetof(CartridgeTagContent, colortyperevision), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "CartridgeSize", + 8, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_cartridgesize), + offsetof(CartridgeTagContent, cartridgesize), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "FilledInkVolume", + 9, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_filledinkvolume), + offsetof(CartridgeTagContent, filledinkvolume), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "InkBatchNum", + 10, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, inkbatchnum), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "InkMFGDate", + 11, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, inkmfgdate), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "InkEOLDate", + 12, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, inkeoldate), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "CartridgeFillingDate", + 13, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, cartridgefillingdate), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WasteFilledDate", + 14, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, wastefilleddate), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "PlugInCounter", + 15, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_plugincounter), + offsetof(CartridgeTagContent, plugincounter), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Inkfill", + 16, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_inkfill), + offsetof(CartridgeTagContent, inkfill), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "InkUsed", + 17, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_inkused), + offsetof(CartridgeTagContent, inkused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "InkEmpty", + 18, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_inkempty), + offsetof(CartridgeTagContent, inkempty), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WasteEmpty", + 19, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_wasteempty), + offsetof(CartridgeTagContent, wasteempty), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WasteFilling", + 20, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_wastefilling), + offsetof(CartridgeTagContent, wastefilling), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WasteFull", + 21, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_wastefull), + offsetof(CartridgeTagContent, wastefull), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Blocked", + 22, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_blocked), + offsetof(CartridgeTagContent, blocked), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Fail", + 23, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeTagContent, has_fail), + offsetof(CartridgeTagContent, fail), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WasteCounter", + 24, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(CartridgeTagContent, has_wastecounter), + offsetof(CartridgeTagContent, wastecounter), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "MachineIdInkUsed", + 25, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, machineidinkused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "MachineIdWasteUsed", + 26, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(CartridgeTagContent, machineidwasteused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned cartridge_tag_content__field_indices_by_name[] = { + 21, /* field[21] = Blocked */ + 12, /* field[12] = CartridgeFillingDate */ + 7, /* field[7] = CartridgeSize */ + 5, /* field[5] = ColorCategory */ + 4, /* field[4] = ColorName */ + 6, /* field[6] = ColorTypeRevision */ + 2, /* field[2] = FactoryId */ + 22, /* field[22] = Fail */ + 8, /* field[8] = FilledInkVolume */ + 3, /* field[3] = FillingSystemId */ + 9, /* field[9] = InkBatchNum */ + 11, /* field[11] = InkEOLDate */ + 17, /* field[17] = InkEmpty */ + 10, /* field[10] = InkMFGDate */ + 16, /* field[16] = InkUsed */ + 15, /* field[15] = Inkfill */ + 24, /* field[24] = MachineIdInkUsed */ + 25, /* field[25] = MachineIdWasteUsed */ + 14, /* field[14] = PlugInCounter */ + 1, /* field[1] = SerialNumber */ + 0, /* field[0] = UniqueId */ + 23, /* field[23] = WasteCounter */ + 18, /* field[18] = WasteEmpty */ + 13, /* field[13] = WasteFilledDate */ + 19, /* field[19] = WasteFilling */ + 20, /* field[20] = WasteFull */ +}; +static const ProtobufCIntRange cartridge_tag_content__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 26 } +}; +const ProtobufCMessageDescriptor cartridge_tag_content__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "CartridgeTagContent", + "CartridgeTagContent", + "CartridgeTagContent", + "", + sizeof(CartridgeTagContent), + 26, + cartridge_tag_content__field_descriptors, + cartridge_tag_content__field_indices_by_name, + 1, cartridge_tag_content__number_ranges, + (ProtobufCMessageInit) cartridge_tag_content__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.h new file mode 100644 index 000000000..116bea117 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeTagContent.pb-c.h @@ -0,0 +1,112 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeTagContent.proto */ + +#ifndef PROTOBUF_C_CartridgeTagContent_2eproto__INCLUDED +#define PROTOBUF_C_CartridgeTagContent_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _CartridgeTagContent CartridgeTagContent; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _CartridgeTagContent +{ + ProtobufCMessage base; + protobuf_c_boolean has_uniqueid; + uint32_t uniqueid; + char *serialnumber; + char *factoryid; + protobuf_c_boolean has_fillingsystemid; + int32_t fillingsystemid; + char *colorname; + protobuf_c_boolean has_colorcategory; + int32_t colorcategory; + protobuf_c_boolean has_colortyperevision; + int32_t colortyperevision; + protobuf_c_boolean has_cartridgesize; + int32_t cartridgesize; + protobuf_c_boolean has_filledinkvolume; + int32_t filledinkvolume; + char *inkbatchnum; + char *inkmfgdate; + char *inkeoldate; + char *cartridgefillingdate; + char *wastefilleddate; + protobuf_c_boolean has_plugincounter; + int32_t plugincounter; + protobuf_c_boolean has_inkfill; + protobuf_c_boolean inkfill; + protobuf_c_boolean has_inkused; + protobuf_c_boolean inkused; + protobuf_c_boolean has_inkempty; + protobuf_c_boolean inkempty; + protobuf_c_boolean has_wasteempty; + protobuf_c_boolean wasteempty; + protobuf_c_boolean has_wastefilling; + protobuf_c_boolean wastefilling; + protobuf_c_boolean has_wastefull; + protobuf_c_boolean wastefull; + protobuf_c_boolean has_blocked; + protobuf_c_boolean blocked; + protobuf_c_boolean has_fail; + protobuf_c_boolean fail; + protobuf_c_boolean has_wastecounter; + int32_t wastecounter; + char *machineidinkused; + char *machineidwasteused; +}; +#define CARTRIDGE_TAG_CONTENT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&cartridge_tag_content__descriptor) \ + , 0, 0, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL } + + +/* CartridgeTagContent methods */ +void cartridge_tag_content__init + (CartridgeTagContent *message); +size_t cartridge_tag_content__get_packed_size + (const CartridgeTagContent *message); +size_t cartridge_tag_content__pack + (const CartridgeTagContent *message, + uint8_t *out); +size_t cartridge_tag_content__pack_to_buffer + (const CartridgeTagContent *message, + ProtobufCBuffer *buffer); +CartridgeTagContent * + cartridge_tag_content__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void cartridge_tag_content__free_unpacked + (CartridgeTagContent *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*CartridgeTagContent_Closure) + (const CartridgeTagContent *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor cartridge_tag_content__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_CartridgeTagContent_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.c new file mode 100644 index 000000000..e78b31d4b --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.c @@ -0,0 +1,105 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeValidationRequest.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "CartridgeValidationRequest.pb-c.h" +void cartridge_validation_request__init + (CartridgeValidationRequest *message) +{ + static const CartridgeValidationRequest init_value = CARTRIDGE_VALIDATION_REQUEST__INIT; + *message = init_value; +} +size_t cartridge_validation_request__get_packed_size + (const CartridgeValidationRequest *message) +{ + assert(message->base.descriptor == &cartridge_validation_request__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t cartridge_validation_request__pack + (const CartridgeValidationRequest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &cartridge_validation_request__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t cartridge_validation_request__pack_to_buffer + (const CartridgeValidationRequest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &cartridge_validation_request__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +CartridgeValidationRequest * + cartridge_validation_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (CartridgeValidationRequest *) + protobuf_c_message_unpack (&cartridge_validation_request__descriptor, + allocator, len, data); +} +void cartridge_validation_request__free_unpacked + (CartridgeValidationRequest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &cartridge_validation_request__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor cartridge_validation_request__field_descriptors[2] = +{ + { + "Cartridge", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(CartridgeValidationRequest, cartridge), + &cartridge__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Action", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_ENUM, + offsetof(CartridgeValidationRequest, has_action), + offsetof(CartridgeValidationRequest, action), + &cartridge_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned cartridge_validation_request__field_indices_by_name[] = { + 1, /* field[1] = Action */ + 0, /* field[0] = Cartridge */ +}; +static const ProtobufCIntRange cartridge_validation_request__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor cartridge_validation_request__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "CartridgeValidationRequest", + "CartridgeValidationRequest", + "CartridgeValidationRequest", + "", + sizeof(CartridgeValidationRequest), + 2, + cartridge_validation_request__field_descriptors, + cartridge_validation_request__field_indices_by_name, + 1, cartridge_validation_request__number_ranges, + (ProtobufCMessageInit) cartridge_validation_request__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.h new file mode 100644 index 000000000..568baa8ce --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationRequest.pb-c.h @@ -0,0 +1,75 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeValidationRequest.proto */ + +#ifndef PROTOBUF_C_CartridgeValidationRequest_2eproto__INCLUDED +#define PROTOBUF_C_CartridgeValidationRequest_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + +#include "Cartridge.pb-c.h" +#include "CartridgeAction.pb-c.h" + +typedef struct _CartridgeValidationRequest CartridgeValidationRequest; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _CartridgeValidationRequest +{ + ProtobufCMessage base; + Cartridge *cartridge; + protobuf_c_boolean has_action; + CartridgeAction action; +}; +#define CARTRIDGE_VALIDATION_REQUEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&cartridge_validation_request__descriptor) \ + , NULL, 0, CARTRIDGE_ACTION__Inserted } + + +/* CartridgeValidationRequest methods */ +void cartridge_validation_request__init + (CartridgeValidationRequest *message); +size_t cartridge_validation_request__get_packed_size + (const CartridgeValidationRequest *message); +size_t cartridge_validation_request__pack + (const CartridgeValidationRequest *message, + uint8_t *out); +size_t cartridge_validation_request__pack_to_buffer + (const CartridgeValidationRequest *message, + ProtobufCBuffer *buffer); +CartridgeValidationRequest * + cartridge_validation_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void cartridge_validation_request__free_unpacked + (CartridgeValidationRequest *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*CartridgeValidationRequest_Closure) + (const CartridgeValidationRequest *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor cartridge_validation_request__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_CartridgeValidationRequest_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.c new file mode 100644 index 000000000..835be6765 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.c @@ -0,0 +1,105 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeValidationResponse.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "CartridgeValidationResponse.pb-c.h" +void cartridge_validation_response__init + (CartridgeValidationResponse *message) +{ + static const CartridgeValidationResponse init_value = CARTRIDGE_VALIDATION_RESPONSE__INIT; + *message = init_value; +} +size_t cartridge_validation_response__get_packed_size + (const CartridgeValidationResponse *message) +{ + assert(message->base.descriptor == &cartridge_validation_response__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t cartridge_validation_response__pack + (const CartridgeValidationResponse *message, + uint8_t *out) +{ + assert(message->base.descriptor == &cartridge_validation_response__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t cartridge_validation_response__pack_to_buffer + (const CartridgeValidationResponse *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &cartridge_validation_response__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +CartridgeValidationResponse * + cartridge_validation_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (CartridgeValidationResponse *) + protobuf_c_message_unpack (&cartridge_validation_response__descriptor, + allocator, len, data); +} +void cartridge_validation_response__free_unpacked + (CartridgeValidationResponse *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &cartridge_validation_response__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor cartridge_validation_response__field_descriptors[2] = +{ + { + "IsValid", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(CartridgeValidationResponse, has_isvalid), + offsetof(CartridgeValidationResponse, isvalid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Cartridge", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(CartridgeValidationResponse, cartridge), + &cartridge__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned cartridge_validation_response__field_indices_by_name[] = { + 1, /* field[1] = Cartridge */ + 0, /* field[0] = IsValid */ +}; +static const ProtobufCIntRange cartridge_validation_response__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor cartridge_validation_response__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "CartridgeValidationResponse", + "CartridgeValidationResponse", + "CartridgeValidationResponse", + "", + sizeof(CartridgeValidationResponse), + 2, + cartridge_validation_response__field_descriptors, + cartridge_validation_response__field_indices_by_name, + 1, cartridge_validation_response__number_ranges, + (ProtobufCMessageInit) cartridge_validation_response__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.h new file mode 100644 index 000000000..8803b6307 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/CartridgeValidationResponse.pb-c.h @@ -0,0 +1,74 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: CartridgeValidationResponse.proto */ + +#ifndef PROTOBUF_C_CartridgeValidationResponse_2eproto__INCLUDED +#define PROTOBUF_C_CartridgeValidationResponse_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + +#include "Cartridge.pb-c.h" + +typedef struct _CartridgeValidationResponse CartridgeValidationResponse; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _CartridgeValidationResponse +{ + ProtobufCMessage base; + protobuf_c_boolean has_isvalid; + protobuf_c_boolean isvalid; + Cartridge *cartridge; +}; +#define CARTRIDGE_VALIDATION_RESPONSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&cartridge_validation_response__descriptor) \ + , 0, 0, NULL } + + +/* CartridgeValidationResponse methods */ +void cartridge_validation_response__init + (CartridgeValidationResponse *message); +size_t cartridge_validation_response__get_packed_size + (const CartridgeValidationResponse *message); +size_t cartridge_validation_response__pack + (const CartridgeValidationResponse *message, + uint8_t *out); +size_t cartridge_validation_response__pack_to_buffer + (const CartridgeValidationResponse *message, + ProtobufCBuffer *buffer); +CartridgeValidationResponse * + cartridge_validation_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void cartridge_validation_response__free_unpacked + (CartridgeValidationResponse *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*CartridgeValidationResponse_Closure) + (const CartridgeValidationResponse *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor cartridge_validation_response__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_CartridgeValidationResponse_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c index d5b888912..11ae78d92 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c @@ -7,7 +7,7 @@ #endif #include "EventType.pb-c.h" -static const ProtobufCEnumValue event_type__enum_values_by_number[285] = +static const ProtobufCEnumValue event_type__enum_values_by_number[289] = { { "None", "EVENT_TYPE__None", 0 }, { "REQUEST_SENT", "EVENT_TYPE__REQUEST_SENT", 1000 }, @@ -20,6 +20,10 @@ static const ProtobufCEnumValue event_type__enum_values_by_number[285] = { "RECORDING_STARTED", "EVENT_TYPE__RECORDING_STARTED", 1007 }, { "RECORDING_STOPPED", "EVENT_TYPE__RECORDING_STOPPED", 1008 }, { "JOB_STATUS", "EVENT_TYPE__JOB_STATUS", 1009 }, + { "JOB_STARTED", "EVENT_TYPE__JOB_STARTED", 1010 }, + { "JOB_ABORTED", "EVENT_TYPE__JOB_ABORTED", 1011 }, + { "JOB_FAILED", "EVENT_TYPE__JOB_FAILED", 1012 }, + { "JOB_COMPLETED", "EVENT_TYPE__JOB_COMPLETED", 1013 }, { "POWER_UP_BIT_FAILURE", "EVENT_TYPE__POWER_UP_BIT_FAILURE", 2000 }, { "EMERGENCY_PUSH_BUTTON_PRESSED", "EVENT_TYPE__EMERGENCY_PUSH_BUTTON_PRESSED", 2001 }, { "FRONT_COVER_1_OPEN", "EVENT_TYPE__FRONT_COVER_1_OPEN", 2002 }, @@ -296,295 +300,299 @@ static const ProtobufCEnumValue event_type__enum_values_by_number[285] = { "WASTE_CARTRIDGE_RFID_TIMEOUT", "EVENT_TYPE__WASTE_CARTRIDGE_RFID_TIMEOUT", 10005 }, }; static const ProtobufCIntRange event_type__value_ranges[] = { -{0, 0},{1000, 1},{2000, 11},{3000, 28},{4000, 79},{5000, 101},{6000, 144},{7000, 150},{8000, 238},{9000, 270},{10000, 279},{0, 285} +{0, 0},{1000, 1},{2000, 15},{3000, 32},{4000, 83},{5000, 105},{6000, 148},{7000, 154},{8000, 242},{9000, 274},{10000, 283},{0, 289} }; -static const ProtobufCEnumValueIndex event_type__enum_values_by_name[285] = +static const ProtobufCEnumValueIndex event_type__enum_values_by_name[289] = { - { "AIR_FILTER_CLOGGED", 271 }, - { "AIR_FILTER_NOT_INSTALLED", 270 }, - { "ALL_WASTE_CARTRIDGES_FULL", 282 }, + { "AIR_FILTER_CLOGGED", 275 }, + { "AIR_FILTER_NOT_INSTALLED", 274 }, + { "ALL_WASTE_CARTRIDGES_FULL", 286 }, { "APPLICATION_EXCEPTION", 4 }, { "APPLICATION_INFORMATION", 5 }, { "APPLICATION_STARTED", 6 }, { "APPLICATION_TERMINATED", 7 }, - { "CARTRIDGES_COVER_OPEN", 17 }, - { "CHILLER_DRY_CONTACT", 276 }, - { "DISPENSER_1_EMPTY", 166 }, - { "DISPENSER_1_HIGH_PRESSURE", 230 }, - { "DISPENSER_1_LOWER_HARD_LIMIT", 222 }, - { "DISPENSER_1_MOTOR_OVERCURRENT", 182 }, - { "DISPENSER_1_MOTOR_OVERTEMPERATURE", 190 }, - { "DISPENSER_1_MOTOR_STALL", 198 }, - { "DISPENSER_1_MOTOR_UNDERVOLTAGE", 206 }, - { "DISPENSER_1_OVERPRESSURE", 150 }, - { "DISPENSER_1_REFILL_FAILURE", 174 }, - { "DISPENSER_1_UNDERPRESSURE", 158 }, - { "DISPENSER_1_UPPER_HARD_LIMIT", 214 }, - { "DISPENSER_2_EMPTY", 167 }, - { "DISPENSER_2_HIGH_PRESSURE", 231 }, - { "DISPENSER_2_LOWER_HARD_LIMIT", 223 }, - { "DISPENSER_2_MOTOR_OVERCURRENT", 183 }, - { "DISPENSER_2_MOTOR_OVERTEMPERATURE", 191 }, - { "DISPENSER_2_MOTOR_STALL", 199 }, - { "DISPENSER_2_MOTOR_UNDERVOLTAGE", 207 }, - { "DISPENSER_2_OVERPRESSURE", 151 }, - { "DISPENSER_2_REFILL_FAILURE", 175 }, - { "DISPENSER_2_UNDERPRESSURE", 159 }, - { "DISPENSER_2_UPPER_HARD_LIMIT", 215 }, - { "DISPENSER_3_EMPTY", 168 }, - { "DISPENSER_3_HIGH_PRESSURE", 232 }, - { "DISPENSER_3_LOWER_HARD_LIMIT", 224 }, - { "DISPENSER_3_MOTOR_OVERCURRENT", 184 }, - { "DISPENSER_3_MOTOR_OVERTEMPERATURE", 192 }, - { "DISPENSER_3_MOTOR_STALL", 200 }, - { "DISPENSER_3_MOTOR_UNDERVOLTAGE", 208 }, - { "DISPENSER_3_OVERPRESSURE", 152 }, - { "DISPENSER_3_REFILL_FAILURE", 176 }, - { "DISPENSER_3_UNDERPRESSURE", 160 }, - { "DISPENSER_3_UPPER_HARD_LIMIT", 216 }, - { "DISPENSER_4_EMPTY", 169 }, - { "DISPENSER_4_HIGH_PRESSURE", 233 }, - { "DISPENSER_4_LOWER_HARD_LIMIT", 225 }, - { "DISPENSER_4_MOTOR_OVERCURRENT", 185 }, - { "DISPENSER_4_MOTOR_OVERTEMPERATURE", 193 }, - { "DISPENSER_4_MOTOR_STALL", 201 }, - { "DISPENSER_4_MOTOR_UNDERVOLTAGE", 209 }, - { "DISPENSER_4_OVERPRESSURE", 153 }, - { "DISPENSER_4_REFILL_FAILURE", 177 }, - { "DISPENSER_4_UNDERPRESSURE", 161 }, - { "DISPENSER_4_UPPER_HARD_LIMIT", 217 }, - { "DISPENSER_5_EMPTY", 170 }, - { "DISPENSER_5_HIGH_PRESSURE", 234 }, - { "DISPENSER_5_LOWER_HARD_LIMIT", 226 }, - { "DISPENSER_5_MOTOR_OVERCURRENT", 186 }, - { "DISPENSER_5_MOTOR_OVERTEMPERATURE", 194 }, - { "DISPENSER_5_MOTOR_STALL", 202 }, - { "DISPENSER_5_MOTOR_UNDERVOLTAGE", 210 }, - { "DISPENSER_5_OVERPRESSURE", 154 }, - { "DISPENSER_5_REFILL_FAILURE", 178 }, - { "DISPENSER_5_UNDERPRESSURE", 162 }, - { "DISPENSER_5_UPPER_HARD_LIMIT", 218 }, - { "DISPENSER_6_EMPTY", 171 }, - { "DISPENSER_6_HIGH_PRESSURE", 235 }, - { "DISPENSER_6_LOWER_HARD_LIMIT", 227 }, - { "DISPENSER_6_MOTOR_OVERCURRENT", 187 }, - { "DISPENSER_6_MOTOR_OVERTEMPERATURE", 195 }, - { "DISPENSER_6_MOTOR_STALL", 203 }, - { "DISPENSER_6_MOTOR_UNDERVOLTAGE", 211 }, - { "DISPENSER_6_OVERPRESSURE", 155 }, - { "DISPENSER_6_REFILL_FAILURE", 179 }, - { "DISPENSER_6_UNDERPRESSURE", 163 }, - { "DISPENSER_6_UPPER_HARD_LIMIT", 219 }, - { "DISPENSER_7_EMPTY", 172 }, - { "DISPENSER_7_HIGH_PRESSURE", 236 }, - { "DISPENSER_7_LOWER_HARD_LIMIT", 228 }, - { "DISPENSER_7_MOTOR_OVERCURRENT", 188 }, - { "DISPENSER_7_MOTOR_OVERTEMPERATURE", 196 }, - { "DISPENSER_7_MOTOR_STALL", 204 }, - { "DISPENSER_7_MOTOR_UNDERVOLTAGE", 212 }, - { "DISPENSER_7_OVERPRESSURE", 156 }, - { "DISPENSER_7_REFILL_FAILURE", 180 }, - { "DISPENSER_7_UNDERPRESSURE", 164 }, - { "DISPENSER_7_UPPER_HARD_LIMIT", 220 }, - { "DISPENSER_8_EMPTY", 173 }, - { "DISPENSER_8_HIGH_PRESSURE", 237 }, - { "DISPENSER_8_LOWER_HARD_LIMIT", 229 }, - { "DISPENSER_8_MOTOR_OVERCURRENT", 189 }, - { "DISPENSER_8_MOTOR_OVERTEMPERATURE", 197 }, - { "DISPENSER_8_MOTOR_STALL", 205 }, - { "DISPENSER_8_MOTOR_UNDERVOLTAGE", 213 }, - { "DISPENSER_8_OVERPRESSURE", 157 }, - { "DISPENSER_8_REFILL_FAILURE", 181 }, - { "DISPENSER_8_UNDERPRESSURE", 165 }, - { "DISPENSER_8_UPPER_HARD_LIMIT", 221 }, - { "DRYER_DOOR_OPEN", 83 }, - { "DRYER_FAN_RPM_TOO_LOW", 94 }, - { "DRYER_FAN_STOPPED", 95 }, - { "DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK", 92 }, - { "DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE", 90 }, - { "DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK", 93 }, - { "DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE", 91 }, - { "DRYER_LID_MOTOR_OVERCURRENT", 96 }, - { "DRYER_LID_MOTOR_OVERTEMPERATURE", 97 }, - { "DRYER_LID_MOTOR_STALL", 98 }, - { "DRYER_LID_MOTOR_UNDERVOLTAGE", 99 }, - { "DRYER_MOTOR_OVERCURRENT", 79 }, - { "DRYER_MOTOR_OVERTEMPERATURE", 80 }, - { "DRYER_MOTOR_STALL", 81 }, - { "DRYER_MOTOR_UNDERVOLTAGE", 82 }, - { "DRYER_THERMAL_CUTOFF", 89 }, - { "DRYER_ZONE_1_OVERTEMPERATURE", 84 }, - { "DRYER_ZONE_1_UNDERTEMPERATURE_A", 86 }, - { "DRYER_ZONE_1_UNDERTEMPERATURE_B", 87 }, - { "DRYER_ZONE_2_OVERTEMPERATURE", 85 }, - { "DRYER_ZONE_2_UNDERTEMPERATURE_A", 100 }, - { "DRYER_ZONE_2_UNDERTEMPERATURE_B", 88 }, - { "DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERCURRENT", 140 }, - { "DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERTEMPERATURE", 141 }, - { "DYEING_HEAD_CLEANING_HEAD_MOTOR_STALL", 142 }, - { "DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE", 143 }, - { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERCURRENT", 136 }, - { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERTEMPERATURE", 137 }, - { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_STALL", 138 }, - { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE", 139 }, - { "DYEING_HEAD_COVER_CLOSE_TIMEOUT", 131 }, - { "DYEING_HEAD_COVER_MOTOR_OVERCURRENT", 132 }, - { "DYEING_HEAD_COVER_MOTOR_OVERTEMPERATURE", 133 }, - { "DYEING_HEAD_COVER_MOTOR_STALL", 134 }, - { "DYEING_HEAD_COVER_MOTOR_UNDERVOLTAGE", 135 }, - { "DYEING_HEAD_COVER_OPEN_TIMEOUT", 130 }, - { "DYEING_HEAD_THERMAL_CUTOFF", 129 }, - { "DYEING_HEAD_ZONE_1_CURRENT_LOOP_BREAK", 124 }, - { "DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE", 119 }, - { "DYEING_HEAD_ZONE_1_OVERTEMPERATURE", 101 }, - { "DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_A", 107 }, - { "DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_B", 113 }, - { "DYEING_HEAD_ZONE_2_CURRENT_LOOP_BREAK", 125 }, - { "DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE", 120 }, - { "DYEING_HEAD_ZONE_2_OVERTEMPERATURE", 102 }, - { "DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_A", 108 }, - { "DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_B", 114 }, - { "DYEING_HEAD_ZONE_3_CURRENT_LOOP_BREAK", 126 }, - { "DYEING_HEAD_ZONE_3_CURRENT_OUT_OF_RANGE", 121 }, - { "DYEING_HEAD_ZONE_3_OVERTEMPERATURE", 103 }, - { "DYEING_HEAD_ZONE_3_UNDERTEMPERATURE_A", 109 }, - { "DYEING_HEAD_ZONE_3_UNDERTEMPERATURE_B", 115 }, - { "DYEING_HEAD_ZONE_4_CURRENT_LOOP_BREAK", 127 }, - { "DYEING_HEAD_ZONE_4_CURRENT_OUT_OF_RANGE", 122 }, - { "DYEING_HEAD_ZONE_4_OVERTEMPERATURE", 104 }, - { "DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_A", 110 }, - { "DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_B", 116 }, - { "DYEING_HEAD_ZONE_5_6_CURRENT_LOOP_BREAK", 128 }, - { "DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE", 123 }, - { "DYEING_HEAD_ZONE_5_OVERTEMPERATURE", 105 }, - { "DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_A", 111 }, - { "DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_B", 117 }, - { "DYEING_HEAD_ZONE_6_OVERTEMPERATURE", 106 }, - { "DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_A", 112 }, - { "DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_B", 118 }, - { "ELECTRICAL_CABINET_FANS_RPM_TOO_LOW", 22 }, - { "ELECTRICAL_CABINET_FANS_STOPPED", 23 }, - { "EMERGENCY_PUSH_BUTTON_PRESSED", 12 }, - { "FEEDER_DANCER_MOTOR_OVERCURRENT", 66 }, - { "FEEDER_DANCER_MOTOR_OVERTEMPERATURE", 69 }, - { "FEEDER_DANCER_MOTOR_STALL", 72 }, - { "FEEDER_DANCER_MOTOR_UNDERVOLTAGE", 75 }, - { "FEEDER_MOTOR_OVERCURRENT", 31 }, - { "FEEDER_MOTOR_OVERTEMPERATURE", 38 }, - { "FEEDER_MOTOR_STALL", 45 }, - { "FEEDER_MOTOR_UNDERVOLTAGE", 52 }, - { "FRONT_COVER_1_OPEN", 13 }, - { "FRONT_COVER_2_OPEN", 14 }, - { "FRONT_COVER_3_OPEN", 15 }, - { "FRONT_COVER_4_OPEN", 16 }, - { "INK_CARTRIDGE_PRESENCE_SENSOR_TIMEOUT", 279 }, - { "INK_CARTRIDGE_RFID_TIMEOUT", 280 }, - { "INSUFFICIENT_AIR_FLOW", 277 }, + { "CARTRIDGES_COVER_OPEN", 21 }, + { "CHILLER_DRY_CONTACT", 280 }, + { "DISPENSER_1_EMPTY", 170 }, + { "DISPENSER_1_HIGH_PRESSURE", 234 }, + { "DISPENSER_1_LOWER_HARD_LIMIT", 226 }, + { "DISPENSER_1_MOTOR_OVERCURRENT", 186 }, + { "DISPENSER_1_MOTOR_OVERTEMPERATURE", 194 }, + { "DISPENSER_1_MOTOR_STALL", 202 }, + { "DISPENSER_1_MOTOR_UNDERVOLTAGE", 210 }, + { "DISPENSER_1_OVERPRESSURE", 154 }, + { "DISPENSER_1_REFILL_FAILURE", 178 }, + { "DISPENSER_1_UNDERPRESSURE", 162 }, + { "DISPENSER_1_UPPER_HARD_LIMIT", 218 }, + { "DISPENSER_2_EMPTY", 171 }, + { "DISPENSER_2_HIGH_PRESSURE", 235 }, + { "DISPENSER_2_LOWER_HARD_LIMIT", 227 }, + { "DISPENSER_2_MOTOR_OVERCURRENT", 187 }, + { "DISPENSER_2_MOTOR_OVERTEMPERATURE", 195 }, + { "DISPENSER_2_MOTOR_STALL", 203 }, + { "DISPENSER_2_MOTOR_UNDERVOLTAGE", 211 }, + { "DISPENSER_2_OVERPRESSURE", 155 }, + { "DISPENSER_2_REFILL_FAILURE", 179 }, + { "DISPENSER_2_UNDERPRESSURE", 163 }, + { "DISPENSER_2_UPPER_HARD_LIMIT", 219 }, + { "DISPENSER_3_EMPTY", 172 }, + { "DISPENSER_3_HIGH_PRESSURE", 236 }, + { "DISPENSER_3_LOWER_HARD_LIMIT", 228 }, + { "DISPENSER_3_MOTOR_OVERCURRENT", 188 }, + { "DISPENSER_3_MOTOR_OVERTEMPERATURE", 196 }, + { "DISPENSER_3_MOTOR_STALL", 204 }, + { "DISPENSER_3_MOTOR_UNDERVOLTAGE", 212 }, + { "DISPENSER_3_OVERPRESSURE", 156 }, + { "DISPENSER_3_REFILL_FAILURE", 180 }, + { "DISPENSER_3_UNDERPRESSURE", 164 }, + { "DISPENSER_3_UPPER_HARD_LIMIT", 220 }, + { "DISPENSER_4_EMPTY", 173 }, + { "DISPENSER_4_HIGH_PRESSURE", 237 }, + { "DISPENSER_4_LOWER_HARD_LIMIT", 229 }, + { "DISPENSER_4_MOTOR_OVERCURRENT", 189 }, + { "DISPENSER_4_MOTOR_OVERTEMPERATURE", 197 }, + { "DISPENSER_4_MOTOR_STALL", 205 }, + { "DISPENSER_4_MOTOR_UNDERVOLTAGE", 213 }, + { "DISPENSER_4_OVERPRESSURE", 157 }, + { "DISPENSER_4_REFILL_FAILURE", 181 }, + { "DISPENSER_4_UNDERPRESSURE", 165 }, + { "DISPENSER_4_UPPER_HARD_LIMIT", 221 }, + { "DISPENSER_5_EMPTY", 174 }, + { "DISPENSER_5_HIGH_PRESSURE", 238 }, + { "DISPENSER_5_LOWER_HARD_LIMIT", 230 }, + { "DISPENSER_5_MOTOR_OVERCURRENT", 190 }, + { "DISPENSER_5_MOTOR_OVERTEMPERATURE", 198 }, + { "DISPENSER_5_MOTOR_STALL", 206 }, + { "DISPENSER_5_MOTOR_UNDERVOLTAGE", 214 }, + { "DISPENSER_5_OVERPRESSURE", 158 }, + { "DISPENSER_5_REFILL_FAILURE", 182 }, + { "DISPENSER_5_UNDERPRESSURE", 166 }, + { "DISPENSER_5_UPPER_HARD_LIMIT", 222 }, + { "DISPENSER_6_EMPTY", 175 }, + { "DISPENSER_6_HIGH_PRESSURE", 239 }, + { "DISPENSER_6_LOWER_HARD_LIMIT", 231 }, + { "DISPENSER_6_MOTOR_OVERCURRENT", 191 }, + { "DISPENSER_6_MOTOR_OVERTEMPERATURE", 199 }, + { "DISPENSER_6_MOTOR_STALL", 207 }, + { "DISPENSER_6_MOTOR_UNDERVOLTAGE", 215 }, + { "DISPENSER_6_OVERPRESSURE", 159 }, + { "DISPENSER_6_REFILL_FAILURE", 183 }, + { "DISPENSER_6_UNDERPRESSURE", 167 }, + { "DISPENSER_6_UPPER_HARD_LIMIT", 223 }, + { "DISPENSER_7_EMPTY", 176 }, + { "DISPENSER_7_HIGH_PRESSURE", 240 }, + { "DISPENSER_7_LOWER_HARD_LIMIT", 232 }, + { "DISPENSER_7_MOTOR_OVERCURRENT", 192 }, + { "DISPENSER_7_MOTOR_OVERTEMPERATURE", 200 }, + { "DISPENSER_7_MOTOR_STALL", 208 }, + { "DISPENSER_7_MOTOR_UNDERVOLTAGE", 216 }, + { "DISPENSER_7_OVERPRESSURE", 160 }, + { "DISPENSER_7_REFILL_FAILURE", 184 }, + { "DISPENSER_7_UNDERPRESSURE", 168 }, + { "DISPENSER_7_UPPER_HARD_LIMIT", 224 }, + { "DISPENSER_8_EMPTY", 177 }, + { "DISPENSER_8_HIGH_PRESSURE", 241 }, + { "DISPENSER_8_LOWER_HARD_LIMIT", 233 }, + { "DISPENSER_8_MOTOR_OVERCURRENT", 193 }, + { "DISPENSER_8_MOTOR_OVERTEMPERATURE", 201 }, + { "DISPENSER_8_MOTOR_STALL", 209 }, + { "DISPENSER_8_MOTOR_UNDERVOLTAGE", 217 }, + { "DISPENSER_8_OVERPRESSURE", 161 }, + { "DISPENSER_8_REFILL_FAILURE", 185 }, + { "DISPENSER_8_UNDERPRESSURE", 169 }, + { "DISPENSER_8_UPPER_HARD_LIMIT", 225 }, + { "DRYER_DOOR_OPEN", 87 }, + { "DRYER_FAN_RPM_TOO_LOW", 98 }, + { "DRYER_FAN_STOPPED", 99 }, + { "DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK", 96 }, + { "DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE", 94 }, + { "DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK", 97 }, + { "DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE", 95 }, + { "DRYER_LID_MOTOR_OVERCURRENT", 100 }, + { "DRYER_LID_MOTOR_OVERTEMPERATURE", 101 }, + { "DRYER_LID_MOTOR_STALL", 102 }, + { "DRYER_LID_MOTOR_UNDERVOLTAGE", 103 }, + { "DRYER_MOTOR_OVERCURRENT", 83 }, + { "DRYER_MOTOR_OVERTEMPERATURE", 84 }, + { "DRYER_MOTOR_STALL", 85 }, + { "DRYER_MOTOR_UNDERVOLTAGE", 86 }, + { "DRYER_THERMAL_CUTOFF", 93 }, + { "DRYER_ZONE_1_OVERTEMPERATURE", 88 }, + { "DRYER_ZONE_1_UNDERTEMPERATURE_A", 90 }, + { "DRYER_ZONE_1_UNDERTEMPERATURE_B", 91 }, + { "DRYER_ZONE_2_OVERTEMPERATURE", 89 }, + { "DRYER_ZONE_2_UNDERTEMPERATURE_A", 104 }, + { "DRYER_ZONE_2_UNDERTEMPERATURE_B", 92 }, + { "DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERCURRENT", 144 }, + { "DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERTEMPERATURE", 145 }, + { "DYEING_HEAD_CLEANING_HEAD_MOTOR_STALL", 146 }, + { "DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE", 147 }, + { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERCURRENT", 140 }, + { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERTEMPERATURE", 141 }, + { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_STALL", 142 }, + { "DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE", 143 }, + { "DYEING_HEAD_COVER_CLOSE_TIMEOUT", 135 }, + { "DYEING_HEAD_COVER_MOTOR_OVERCURRENT", 136 }, + { "DYEING_HEAD_COVER_MOTOR_OVERTEMPERATURE", 137 }, + { "DYEING_HEAD_COVER_MOTOR_STALL", 138 }, + { "DYEING_HEAD_COVER_MOTOR_UNDERVOLTAGE", 139 }, + { "DYEING_HEAD_COVER_OPEN_TIMEOUT", 134 }, + { "DYEING_HEAD_THERMAL_CUTOFF", 133 }, + { "DYEING_HEAD_ZONE_1_CURRENT_LOOP_BREAK", 128 }, + { "DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE", 123 }, + { "DYEING_HEAD_ZONE_1_OVERTEMPERATURE", 105 }, + { "DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_A", 111 }, + { "DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_B", 117 }, + { "DYEING_HEAD_ZONE_2_CURRENT_LOOP_BREAK", 129 }, + { "DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE", 124 }, + { "DYEING_HEAD_ZONE_2_OVERTEMPERATURE", 106 }, + { "DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_A", 112 }, + { "DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_B", 118 }, + { "DYEING_HEAD_ZONE_3_CURRENT_LOOP_BREAK", 130 }, + { "DYEING_HEAD_ZONE_3_CURRENT_OUT_OF_RANGE", 125 }, + { "DYEING_HEAD_ZONE_3_OVERTEMPERATURE", 107 }, + { "DYEING_HEAD_ZONE_3_UNDERTEMPERATURE_A", 113 }, + { "DYEING_HEAD_ZONE_3_UNDERTEMPERATURE_B", 119 }, + { "DYEING_HEAD_ZONE_4_CURRENT_LOOP_BREAK", 131 }, + { "DYEING_HEAD_ZONE_4_CURRENT_OUT_OF_RANGE", 126 }, + { "DYEING_HEAD_ZONE_4_OVERTEMPERATURE", 108 }, + { "DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_A", 114 }, + { "DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_B", 120 }, + { "DYEING_HEAD_ZONE_5_6_CURRENT_LOOP_BREAK", 132 }, + { "DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE", 127 }, + { "DYEING_HEAD_ZONE_5_OVERTEMPERATURE", 109 }, + { "DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_A", 115 }, + { "DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_B", 121 }, + { "DYEING_HEAD_ZONE_6_OVERTEMPERATURE", 110 }, + { "DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_A", 116 }, + { "DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_B", 122 }, + { "ELECTRICAL_CABINET_FANS_RPM_TOO_LOW", 26 }, + { "ELECTRICAL_CABINET_FANS_STOPPED", 27 }, + { "EMERGENCY_PUSH_BUTTON_PRESSED", 16 }, + { "FEEDER_DANCER_MOTOR_OVERCURRENT", 70 }, + { "FEEDER_DANCER_MOTOR_OVERTEMPERATURE", 73 }, + { "FEEDER_DANCER_MOTOR_STALL", 76 }, + { "FEEDER_DANCER_MOTOR_UNDERVOLTAGE", 79 }, + { "FEEDER_MOTOR_OVERCURRENT", 35 }, + { "FEEDER_MOTOR_OVERTEMPERATURE", 42 }, + { "FEEDER_MOTOR_STALL", 49 }, + { "FEEDER_MOTOR_UNDERVOLTAGE", 56 }, + { "FRONT_COVER_1_OPEN", 17 }, + { "FRONT_COVER_2_OPEN", 18 }, + { "FRONT_COVER_3_OPEN", 19 }, + { "FRONT_COVER_4_OPEN", 20 }, + { "INK_CARTRIDGE_PRESENCE_SENSOR_TIMEOUT", 283 }, + { "INK_CARTRIDGE_RFID_TIMEOUT", 284 }, + { "INSUFFICIENT_AIR_FLOW", 281 }, + { "JOB_ABORTED", 12 }, + { "JOB_COMPLETED", 14 }, + { "JOB_FAILED", 13 }, + { "JOB_STARTED", 11 }, { "JOB_STATUS", 10 }, - { "LEFT_LOADER_MOTOR_OVERCURRENT", 34 }, - { "LEFT_LOADER_MOTOR_OVERTEMPERATURE", 41 }, - { "LEFT_LOADER_MOTOR_STALL", 48 }, - { "LEFT_LOADER_MOTOR_UNDERVOLTAGE", 55 }, - { "LOADING_ARM_MOTOR_OVERCURRENT", 37 }, - { "LOADING_ARM_MOTOR_OVERTEMPERATURE", 44 }, - { "LOADING_ARM_MOTOR_STALL", 51 }, - { "LOADING_ARM_MOTOR_UNDERVOLTAGE", 58 }, - { "LTFU_DOWN_TIMEOUT", 60 }, - { "LTFU_UP_TIMEOUT", 59 }, - { "MACHINE_FANS_RPM_TOO_LOW", 20 }, - { "MACHINE_FANS_STOPPED", 21 }, - { "MACHINE_INTERNAL_OVERTEMPERATURE", 19 }, - { "MACHINE_STATE_HW_CONFIG_FAILED", 25 }, - { "MACHINE_STATE_INITIAL_BLOWER_FAILED", 26 }, - { "MACHINE_STATE_NO_CFG_FILE", 24 }, - { "MACHINE_STATE_NO_THREAD_DETECTED", 78 }, - { "MID_TANK_1_EMPTY", 246 }, - { "MID_TANK_1_FILL_TIMEOUT", 262 }, - { "MID_TANK_1_LOW_LEVEL", 238 }, - { "MID_TANK_1_OVERFLOW", 254 }, - { "MID_TANK_2_EMPTY", 247 }, - { "MID_TANK_2_FILL_TIMEOUT", 263 }, - { "MID_TANK_2_LOW_LEVEL", 239 }, - { "MID_TANK_2_OVERFLOW", 255 }, - { "MID_TANK_3_EMPTY", 248 }, - { "MID_TANK_3_FILL_TIMEOUT", 264 }, - { "MID_TANK_3_LOW_LEVEL", 240 }, - { "MID_TANK_3_OVERFLOW", 256 }, - { "MID_TANK_4_EMPTY", 249 }, - { "MID_TANK_4_FILL_TIMEOUT", 265 }, - { "MID_TANK_4_LOW_LEVEL", 241 }, - { "MID_TANK_4_OVERFLOW", 257 }, - { "MID_TANK_5_EMPTY", 250 }, - { "MID_TANK_5_FILL_TIMEOUT", 266 }, - { "MID_TANK_5_LOW_LEVEL", 242 }, - { "MID_TANK_5_OVERFLOW", 258 }, - { "MID_TANK_6_EMPTY", 251 }, - { "MID_TANK_6_FILL_TIMEOUT", 267 }, - { "MID_TANK_6_LOW_LEVEL", 243 }, - { "MID_TANK_6_OVERFLOW", 259 }, - { "MID_TANK_7_EMPTY", 252 }, - { "MID_TANK_7_FILL_TIMEOUT", 268 }, - { "MID_TANK_7_LOW_LEVEL", 244 }, - { "MID_TANK_7_OVERFLOW", 260 }, - { "MID_TANK_8_EMPTY", 253 }, - { "MID_TANK_8_FILL_TIMEOUT", 269 }, - { "MID_TANK_8_LOW_LEVEL", 245 }, - { "MID_TANK_8_OVERFLOW", 261 }, - { "MIXER_CURRENT_LOOP_BREAK", 149 }, - { "MIXER_CURRENT_OUT_OF_RANGE", 148 }, - { "MIXER_OVERTEMPERATURE", 144 }, - { "MIXER_THERMAL_CUTOFF", 147 }, - { "MIXER_UNDERTEMPERATURE_A", 145 }, - { "MIXER_UNDERTEMPERATURE_B", 146 }, - { "NO_AIR_PRESSURE", 273 }, - { "NO_WASTE_CARTRIDGE_AVAILABLE", 281 }, + { "LEFT_LOADER_MOTOR_OVERCURRENT", 38 }, + { "LEFT_LOADER_MOTOR_OVERTEMPERATURE", 45 }, + { "LEFT_LOADER_MOTOR_STALL", 52 }, + { "LEFT_LOADER_MOTOR_UNDERVOLTAGE", 59 }, + { "LOADING_ARM_MOTOR_OVERCURRENT", 41 }, + { "LOADING_ARM_MOTOR_OVERTEMPERATURE", 48 }, + { "LOADING_ARM_MOTOR_STALL", 55 }, + { "LOADING_ARM_MOTOR_UNDERVOLTAGE", 62 }, + { "LTFU_DOWN_TIMEOUT", 64 }, + { "LTFU_UP_TIMEOUT", 63 }, + { "MACHINE_FANS_RPM_TOO_LOW", 24 }, + { "MACHINE_FANS_STOPPED", 25 }, + { "MACHINE_INTERNAL_OVERTEMPERATURE", 23 }, + { "MACHINE_STATE_HW_CONFIG_FAILED", 29 }, + { "MACHINE_STATE_INITIAL_BLOWER_FAILED", 30 }, + { "MACHINE_STATE_NO_CFG_FILE", 28 }, + { "MACHINE_STATE_NO_THREAD_DETECTED", 82 }, + { "MID_TANK_1_EMPTY", 250 }, + { "MID_TANK_1_FILL_TIMEOUT", 266 }, + { "MID_TANK_1_LOW_LEVEL", 242 }, + { "MID_TANK_1_OVERFLOW", 258 }, + { "MID_TANK_2_EMPTY", 251 }, + { "MID_TANK_2_FILL_TIMEOUT", 267 }, + { "MID_TANK_2_LOW_LEVEL", 243 }, + { "MID_TANK_2_OVERFLOW", 259 }, + { "MID_TANK_3_EMPTY", 252 }, + { "MID_TANK_3_FILL_TIMEOUT", 268 }, + { "MID_TANK_3_LOW_LEVEL", 244 }, + { "MID_TANK_3_OVERFLOW", 260 }, + { "MID_TANK_4_EMPTY", 253 }, + { "MID_TANK_4_FILL_TIMEOUT", 269 }, + { "MID_TANK_4_LOW_LEVEL", 245 }, + { "MID_TANK_4_OVERFLOW", 261 }, + { "MID_TANK_5_EMPTY", 254 }, + { "MID_TANK_5_FILL_TIMEOUT", 270 }, + { "MID_TANK_5_LOW_LEVEL", 246 }, + { "MID_TANK_5_OVERFLOW", 262 }, + { "MID_TANK_6_EMPTY", 255 }, + { "MID_TANK_6_FILL_TIMEOUT", 271 }, + { "MID_TANK_6_LOW_LEVEL", 247 }, + { "MID_TANK_6_OVERFLOW", 263 }, + { "MID_TANK_7_EMPTY", 256 }, + { "MID_TANK_7_FILL_TIMEOUT", 272 }, + { "MID_TANK_7_LOW_LEVEL", 248 }, + { "MID_TANK_7_OVERFLOW", 264 }, + { "MID_TANK_8_EMPTY", 257 }, + { "MID_TANK_8_FILL_TIMEOUT", 273 }, + { "MID_TANK_8_LOW_LEVEL", 249 }, + { "MID_TANK_8_OVERFLOW", 265 }, + { "MIXER_CURRENT_LOOP_BREAK", 153 }, + { "MIXER_CURRENT_OUT_OF_RANGE", 152 }, + { "MIXER_OVERTEMPERATURE", 148 }, + { "MIXER_THERMAL_CUTOFF", 151 }, + { "MIXER_UNDERTEMPERATURE_A", 149 }, + { "MIXER_UNDERTEMPERATURE_B", 150 }, + { "NO_AIR_PRESSURE", 277 }, + { "NO_WASTE_CARTRIDGE_AVAILABLE", 285 }, { "None", 0 }, - { "POWER_UP_BIT_FAILURE", 11 }, - { "PULLER_DANCER_MOTOR_OVERCURRENT", 65 }, - { "PULLER_DANCER_MOTOR_OVERTEMPERATURE", 68 }, - { "PULLER_DANCER_MOTOR_STALL", 71 }, - { "PULLER_DANCER_MOTOR_UNDERVOLTAGE", 74 }, - { "PULLER_MOTOR_OVERCURRENT", 33 }, - { "PULLER_MOTOR_OVERTEMPERATURE", 40 }, - { "PULLER_MOTOR_STALL", 47 }, - { "PULLER_MOTOR_UNDERVOLTAGE", 54 }, - { "REAR_COVER_OPEN", 18 }, + { "POWER_UP_BIT_FAILURE", 15 }, + { "PULLER_DANCER_MOTOR_OVERCURRENT", 69 }, + { "PULLER_DANCER_MOTOR_OVERTEMPERATURE", 72 }, + { "PULLER_DANCER_MOTOR_STALL", 75 }, + { "PULLER_DANCER_MOTOR_UNDERVOLTAGE", 78 }, + { "PULLER_MOTOR_OVERCURRENT", 37 }, + { "PULLER_MOTOR_OVERTEMPERATURE", 44 }, + { "PULLER_MOTOR_STALL", 51 }, + { "PULLER_MOTOR_UNDERVOLTAGE", 58 }, + { "REAR_COVER_OPEN", 22 }, { "RECORDING_STARTED", 8 }, { "RECORDING_STOPPED", 9 }, { "REQUEST_FAILED", 3 }, { "REQUEST_SENT", 1 }, { "RESPONSE_RECEIVED", 2 }, - { "RIGHT_LOADER_MOTOR_OVERCURRENT", 32 }, - { "RIGHT_LOADER_MOTOR_OVERTEMPERATURE", 39 }, - { "RIGHT_LOADER_MOTOR_STALL", 46 }, - { "RIGHT_LOADER_MOTOR_UNDERVOLTAGE", 53 }, - { "RTFU_DOWN_TIMEOUT", 62 }, - { "RTFU_UP_TIMEOUT", 61 }, - { "SCREW_MOTOR_LIMIT_TIMEOUT", 63 }, - { "SCREW_MOTOR_OVERCURRENT", 36 }, - { "SCREW_MOTOR_OVERTEMPERATURE", 43 }, - { "SCREW_MOTOR_STALL", 50 }, - { "SCREW_MOTOR_UNDERVOLTAGE", 57 }, - { "THREAD_BREAK", 28 }, - { "THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER", 29 }, - { "THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER", 76 }, - { "THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER", 77 }, - { "UNSPECIFIED", 27 }, - { "VOC_SENSOR_ALARM_SLOPE", 278 }, - { "VOC_SENSOR_ALARM_TIME", 275 }, - { "WASTE_CARTRIDGE_PRESENCE_SENSOR_TIMEOUT", 283 }, - { "WASTE_CARTRIDGE_RFID_TIMEOUT", 284 }, - { "WASTE_CONTAINER_EMPTYING_TIMEOUT", 272 }, - { "WASTE_CONTAINER_OVERFLOW", 274 }, - { "WINDER_CONE_DOES_NOT_EXIST", 30 }, - { "WINDER_DANCER_MOTOR_OVERCURRENT", 64 }, - { "WINDER_DANCER_MOTOR_OVERTEMPERATURE", 67 }, - { "WINDER_DANCER_MOTOR_STALL", 70 }, - { "WINDER_DANCER_MOTOR_UNDERVOLTAGE", 73 }, - { "WINDER_MOTOR_OVERCURRENT", 35 }, - { "WINDER_MOTOR_OVERTEMPERATURE", 42 }, - { "WINDER_MOTOR_STALL", 49 }, - { "WINDER_MOTOR_UNDERVOLTAGE", 56 }, + { "RIGHT_LOADER_MOTOR_OVERCURRENT", 36 }, + { "RIGHT_LOADER_MOTOR_OVERTEMPERATURE", 43 }, + { "RIGHT_LOADER_MOTOR_STALL", 50 }, + { "RIGHT_LOADER_MOTOR_UNDERVOLTAGE", 57 }, + { "RTFU_DOWN_TIMEOUT", 66 }, + { "RTFU_UP_TIMEOUT", 65 }, + { "SCREW_MOTOR_LIMIT_TIMEOUT", 67 }, + { "SCREW_MOTOR_OVERCURRENT", 40 }, + { "SCREW_MOTOR_OVERTEMPERATURE", 47 }, + { "SCREW_MOTOR_STALL", 54 }, + { "SCREW_MOTOR_UNDERVOLTAGE", 61 }, + { "THREAD_BREAK", 32 }, + { "THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER", 33 }, + { "THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER", 80 }, + { "THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER", 81 }, + { "UNSPECIFIED", 31 }, + { "VOC_SENSOR_ALARM_SLOPE", 282 }, + { "VOC_SENSOR_ALARM_TIME", 279 }, + { "WASTE_CARTRIDGE_PRESENCE_SENSOR_TIMEOUT", 287 }, + { "WASTE_CARTRIDGE_RFID_TIMEOUT", 288 }, + { "WASTE_CONTAINER_EMPTYING_TIMEOUT", 276 }, + { "WASTE_CONTAINER_OVERFLOW", 278 }, + { "WINDER_CONE_DOES_NOT_EXIST", 34 }, + { "WINDER_DANCER_MOTOR_OVERCURRENT", 68 }, + { "WINDER_DANCER_MOTOR_OVERTEMPERATURE", 71 }, + { "WINDER_DANCER_MOTOR_STALL", 74 }, + { "WINDER_DANCER_MOTOR_UNDERVOLTAGE", 77 }, + { "WINDER_MOTOR_OVERCURRENT", 39 }, + { "WINDER_MOTOR_OVERTEMPERATURE", 46 }, + { "WINDER_MOTOR_STALL", 53 }, + { "WINDER_MOTOR_UNDERVOLTAGE", 60 }, }; const ProtobufCEnumDescriptor event_type__descriptor = { @@ -593,9 +601,9 @@ const ProtobufCEnumDescriptor event_type__descriptor = "EventType", "EventType", "", - 285, + 289, event_type__enum_values_by_number, - 285, + 289, event_type__enum_values_by_name, 11, event_type__value_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h index f8aecc24f..3a2ffd071 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h @@ -31,6 +31,10 @@ typedef enum _EventType { EVENT_TYPE__RECORDING_STARTED = 1007, EVENT_TYPE__RECORDING_STOPPED = 1008, EVENT_TYPE__JOB_STATUS = 1009, + EVENT_TYPE__JOB_STARTED = 1010, + EVENT_TYPE__JOB_ABORTED = 1011, + EVENT_TYPE__JOB_FAILED = 1012, + EVENT_TYPE__JOB_COMPLETED = 1013, EVENT_TYPE__POWER_UP_BIT_FAILURE = 2000, EVENT_TYPE__EMERGENCY_PUSH_BUTTON_PRESSED = 2001, EVENT_TYPE__FRONT_COVER_1_OPEN = 2002, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.c new file mode 100644 index 000000000..1e96547cf --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.c @@ -0,0 +1,72 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StartCartridgesUpdateRequest.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "StartCartridgesUpdateRequest.pb-c.h" +void start_cartridges_update_request__init + (StartCartridgesUpdateRequest *message) +{ + static const StartCartridgesUpdateRequest init_value = START_CARTRIDGES_UPDATE_REQUEST__INIT; + *message = init_value; +} +size_t start_cartridges_update_request__get_packed_size + (const StartCartridgesUpdateRequest *message) +{ + assert(message->base.descriptor == &start_cartridges_update_request__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t start_cartridges_update_request__pack + (const StartCartridgesUpdateRequest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &start_cartridges_update_request__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t start_cartridges_update_request__pack_to_buffer + (const StartCartridgesUpdateRequest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &start_cartridges_update_request__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +StartCartridgesUpdateRequest * + start_cartridges_update_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (StartCartridgesUpdateRequest *) + protobuf_c_message_unpack (&start_cartridges_update_request__descriptor, + allocator, len, data); +} +void start_cartridges_update_request__free_unpacked + (StartCartridgesUpdateRequest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &start_cartridges_update_request__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +#define start_cartridges_update_request__field_descriptors NULL +#define start_cartridges_update_request__field_indices_by_name NULL +#define start_cartridges_update_request__number_ranges NULL +const ProtobufCMessageDescriptor start_cartridges_update_request__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "StartCartridgesUpdateRequest", + "StartCartridgesUpdateRequest", + "StartCartridgesUpdateRequest", + "", + sizeof(StartCartridgesUpdateRequest), + 0, + start_cartridges_update_request__field_descriptors, + start_cartridges_update_request__field_indices_by_name, + 0, start_cartridges_update_request__number_ranges, + (ProtobufCMessageInit) start_cartridges_update_request__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.h new file mode 100644 index 000000000..f8f2dcf3b --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateRequest.pb-c.h @@ -0,0 +1,70 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StartCartridgesUpdateRequest.proto */ + +#ifndef PROTOBUF_C_StartCartridgesUpdateRequest_2eproto__INCLUDED +#define PROTOBUF_C_StartCartridgesUpdateRequest_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _StartCartridgesUpdateRequest StartCartridgesUpdateRequest; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _StartCartridgesUpdateRequest +{ + ProtobufCMessage base; +}; +#define START_CARTRIDGES_UPDATE_REQUEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&start_cartridges_update_request__descriptor) \ + } + + +/* StartCartridgesUpdateRequest methods */ +void start_cartridges_update_request__init + (StartCartridgesUpdateRequest *message); +size_t start_cartridges_update_request__get_packed_size + (const StartCartridgesUpdateRequest *message); +size_t start_cartridges_update_request__pack + (const StartCartridgesUpdateRequest *message, + uint8_t *out); +size_t start_cartridges_update_request__pack_to_buffer + (const StartCartridgesUpdateRequest *message, + ProtobufCBuffer *buffer); +StartCartridgesUpdateRequest * + start_cartridges_update_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void start_cartridges_update_request__free_unpacked + (StartCartridgesUpdateRequest *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*StartCartridgesUpdateRequest_Closure) + (const StartCartridgesUpdateRequest *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor start_cartridges_update_request__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_StartCartridgesUpdateRequest_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.c new file mode 100644 index 000000000..683e28ee2 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.c @@ -0,0 +1,105 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StartCartridgesUpdateResponse.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "StartCartridgesUpdateResponse.pb-c.h" +void start_cartridges_update_response__init + (StartCartridgesUpdateResponse *message) +{ + static const StartCartridgesUpdateResponse init_value = START_CARTRIDGES_UPDATE_RESPONSE__INIT; + *message = init_value; +} +size_t start_cartridges_update_response__get_packed_size + (const StartCartridgesUpdateResponse *message) +{ + assert(message->base.descriptor == &start_cartridges_update_response__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t start_cartridges_update_response__pack + (const StartCartridgesUpdateResponse *message, + uint8_t *out) +{ + assert(message->base.descriptor == &start_cartridges_update_response__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t start_cartridges_update_response__pack_to_buffer + (const StartCartridgesUpdateResponse *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &start_cartridges_update_response__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +StartCartridgesUpdateResponse * + start_cartridges_update_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (StartCartridgesUpdateResponse *) + protobuf_c_message_unpack (&start_cartridges_update_response__descriptor, + allocator, len, data); +} +void start_cartridges_update_response__free_unpacked + (StartCartridgesUpdateResponse *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &start_cartridges_update_response__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor start_cartridges_update_response__field_descriptors[2] = +{ + { + "Cartridge", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(StartCartridgesUpdateResponse, cartridge), + &cartridge__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Action", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_ENUM, + offsetof(StartCartridgesUpdateResponse, has_action), + offsetof(StartCartridgesUpdateResponse, action), + &cartridge_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned start_cartridges_update_response__field_indices_by_name[] = { + 1, /* field[1] = Action */ + 0, /* field[0] = Cartridge */ +}; +static const ProtobufCIntRange start_cartridges_update_response__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor start_cartridges_update_response__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "StartCartridgesUpdateResponse", + "StartCartridgesUpdateResponse", + "StartCartridgesUpdateResponse", + "", + sizeof(StartCartridgesUpdateResponse), + 2, + start_cartridges_update_response__field_descriptors, + start_cartridges_update_response__field_indices_by_name, + 1, start_cartridges_update_response__number_ranges, + (ProtobufCMessageInit) start_cartridges_update_response__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.h new file mode 100644 index 000000000..409c8ff3f --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StartCartridgesUpdateResponse.pb-c.h @@ -0,0 +1,75 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StartCartridgesUpdateResponse.proto */ + +#ifndef PROTOBUF_C_StartCartridgesUpdateResponse_2eproto__INCLUDED +#define PROTOBUF_C_StartCartridgesUpdateResponse_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + +#include "Cartridge.pb-c.h" +#include "CartridgeAction.pb-c.h" + +typedef struct _StartCartridgesUpdateResponse StartCartridgesUpdateResponse; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _StartCartridgesUpdateResponse +{ + ProtobufCMessage base; + Cartridge *cartridge; + protobuf_c_boolean has_action; + CartridgeAction action; +}; +#define START_CARTRIDGES_UPDATE_RESPONSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&start_cartridges_update_response__descriptor) \ + , NULL, 0, CARTRIDGE_ACTION__Inserted } + + +/* StartCartridgesUpdateResponse methods */ +void start_cartridges_update_response__init + (StartCartridgesUpdateResponse *message); +size_t start_cartridges_update_response__get_packed_size + (const StartCartridgesUpdateResponse *message); +size_t start_cartridges_update_response__pack + (const StartCartridgesUpdateResponse *message, + uint8_t *out); +size_t start_cartridges_update_response__pack_to_buffer + (const StartCartridgesUpdateResponse *message, + ProtobufCBuffer *buffer); +StartCartridgesUpdateResponse * + start_cartridges_update_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void start_cartridges_update_response__free_unpacked + (StartCartridgesUpdateResponse *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*StartCartridgesUpdateResponse_Closure) + (const StartCartridgesUpdateResponse *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor start_cartridges_update_response__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_StartCartridgesUpdateResponse_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.c new file mode 100644 index 000000000..265f663a7 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.c @@ -0,0 +1,72 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StopCartridgesUpdateRequest.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "StopCartridgesUpdateRequest.pb-c.h" +void stop_cartridges_update_request__init + (StopCartridgesUpdateRequest *message) +{ + static const StopCartridgesUpdateRequest init_value = STOP_CARTRIDGES_UPDATE_REQUEST__INIT; + *message = init_value; +} +size_t stop_cartridges_update_request__get_packed_size + (const StopCartridgesUpdateRequest *message) +{ + assert(message->base.descriptor == &stop_cartridges_update_request__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t stop_cartridges_update_request__pack + (const StopCartridgesUpdateRequest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &stop_cartridges_update_request__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t stop_cartridges_update_request__pack_to_buffer + (const StopCartridgesUpdateRequest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &stop_cartridges_update_request__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +StopCartridgesUpdateRequest * + stop_cartridges_update_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (StopCartridgesUpdateRequest *) + protobuf_c_message_unpack (&stop_cartridges_update_request__descriptor, + allocator, len, data); +} +void stop_cartridges_update_request__free_unpacked + (StopCartridgesUpdateRequest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &stop_cartridges_update_request__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +#define stop_cartridges_update_request__field_descriptors NULL +#define stop_cartridges_update_request__field_indices_by_name NULL +#define stop_cartridges_update_request__number_ranges NULL +const ProtobufCMessageDescriptor stop_cartridges_update_request__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "StopCartridgesUpdateRequest", + "StopCartridgesUpdateRequest", + "StopCartridgesUpdateRequest", + "", + sizeof(StopCartridgesUpdateRequest), + 0, + stop_cartridges_update_request__field_descriptors, + stop_cartridges_update_request__field_indices_by_name, + 0, stop_cartridges_update_request__number_ranges, + (ProtobufCMessageInit) stop_cartridges_update_request__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.h new file mode 100644 index 000000000..5a1b486c9 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateRequest.pb-c.h @@ -0,0 +1,70 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StopCartridgesUpdateRequest.proto */ + +#ifndef PROTOBUF_C_StopCartridgesUpdateRequest_2eproto__INCLUDED +#define PROTOBUF_C_StopCartridgesUpdateRequest_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _StopCartridgesUpdateRequest StopCartridgesUpdateRequest; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _StopCartridgesUpdateRequest +{ + ProtobufCMessage base; +}; +#define STOP_CARTRIDGES_UPDATE_REQUEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&stop_cartridges_update_request__descriptor) \ + } + + +/* StopCartridgesUpdateRequest methods */ +void stop_cartridges_update_request__init + (StopCartridgesUpdateRequest *message); +size_t stop_cartridges_update_request__get_packed_size + (const StopCartridgesUpdateRequest *message); +size_t stop_cartridges_update_request__pack + (const StopCartridgesUpdateRequest *message, + uint8_t *out); +size_t stop_cartridges_update_request__pack_to_buffer + (const StopCartridgesUpdateRequest *message, + ProtobufCBuffer *buffer); +StopCartridgesUpdateRequest * + stop_cartridges_update_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void stop_cartridges_update_request__free_unpacked + (StopCartridgesUpdateRequest *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*StopCartridgesUpdateRequest_Closure) + (const StopCartridgesUpdateRequest *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor stop_cartridges_update_request__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_StopCartridgesUpdateRequest_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.c new file mode 100644 index 000000000..5c514a9ed --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.c @@ -0,0 +1,72 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StopCartridgesUpdateResponse.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "StopCartridgesUpdateResponse.pb-c.h" +void stop_cartridges_update_response__init + (StopCartridgesUpdateResponse *message) +{ + static const StopCartridgesUpdateResponse init_value = STOP_CARTRIDGES_UPDATE_RESPONSE__INIT; + *message = init_value; +} +size_t stop_cartridges_update_response__get_packed_size + (const StopCartridgesUpdateResponse *message) +{ + assert(message->base.descriptor == &stop_cartridges_update_response__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t stop_cartridges_update_response__pack + (const StopCartridgesUpdateResponse *message, + uint8_t *out) +{ + assert(message->base.descriptor == &stop_cartridges_update_response__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t stop_cartridges_update_response__pack_to_buffer + (const StopCartridgesUpdateResponse *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &stop_cartridges_update_response__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +StopCartridgesUpdateResponse * + stop_cartridges_update_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (StopCartridgesUpdateResponse *) + protobuf_c_message_unpack (&stop_cartridges_update_response__descriptor, + allocator, len, data); +} +void stop_cartridges_update_response__free_unpacked + (StopCartridgesUpdateResponse *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &stop_cartridges_update_response__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +#define stop_cartridges_update_response__field_descriptors NULL +#define stop_cartridges_update_response__field_indices_by_name NULL +#define stop_cartridges_update_response__number_ranges NULL +const ProtobufCMessageDescriptor stop_cartridges_update_response__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "StopCartridgesUpdateResponse", + "StopCartridgesUpdateResponse", + "StopCartridgesUpdateResponse", + "", + sizeof(StopCartridgesUpdateResponse), + 0, + stop_cartridges_update_response__field_descriptors, + stop_cartridges_update_response__field_indices_by_name, + 0, stop_cartridges_update_response__number_ranges, + (ProtobufCMessageInit) stop_cartridges_update_response__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.h new file mode 100644 index 000000000..f173eaa69 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/StopCartridgesUpdateResponse.pb-c.h @@ -0,0 +1,70 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: StopCartridgesUpdateResponse.proto */ + +#ifndef PROTOBUF_C_StopCartridgesUpdateResponse_2eproto__INCLUDED +#define PROTOBUF_C_StopCartridgesUpdateResponse_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _StopCartridgesUpdateResponse StopCartridgesUpdateResponse; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _StopCartridgesUpdateResponse +{ + ProtobufCMessage base; +}; +#define STOP_CARTRIDGES_UPDATE_RESPONSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&stop_cartridges_update_response__descriptor) \ + } + + +/* StopCartridgesUpdateResponse methods */ +void stop_cartridges_update_response__init + (StopCartridgesUpdateResponse *message); +size_t stop_cartridges_update_response__get_packed_size + (const StopCartridgesUpdateResponse *message); +size_t stop_cartridges_update_response__pack + (const StopCartridgesUpdateResponse *message, + uint8_t *out); +size_t stop_cartridges_update_response__pack_to_buffer + (const StopCartridgesUpdateResponse *message, + ProtobufCBuffer *buffer); +StopCartridgesUpdateResponse * + stop_cartridges_update_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void stop_cartridges_update_response__free_unpacked + (StopCartridgesUpdateResponse *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*StopCartridgesUpdateResponse_Closure) + (const StopCartridgesUpdateResponse *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor stop_cartridges_update_response__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_StopCartridgesUpdateResponse_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c index d6f9d3347..bfda97424 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c @@ -52,7 +52,7 @@ void hardware_motor__free_unpacked assert(message->base.descriptor == &hardware_motor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[25] = +static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = { { "HardwareMotorType", @@ -354,6 +354,114 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[25] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "GateCfg1", + 26, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_gatecfg1), + offsetof(HardwareMotor, gatecfg1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "GateCfg2", + 27, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_gatecfg2), + offsetof(HardwareMotor, gatecfg2), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TvalHold", + 28, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tvalhold), + offsetof(HardwareMotor, tvalhold), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TvalRun", + 29, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tvalrun), + offsetof(HardwareMotor, tvalrun), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TvalAcc", + 30, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tvalacc), + offsetof(HardwareMotor, tvalacc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TvalDec", + 31, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tvaldec), + offsetof(HardwareMotor, tvaldec), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TFast", + 32, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tfast), + offsetof(HardwareMotor, tfast), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TOnMin", + 33, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_tonmin), + offsetof(HardwareMotor, tonmin), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "TOffMin", + 34, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(HardwareMotor, has_toffmin), + offsetof(HardwareMotor, toffmin), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned hardware_motor__field_indices_by_name[] = { 10, /* field[10] = ConfigWord */ @@ -361,6 +469,8 @@ static const unsigned hardware_motor__field_indices_by_name[] = { 22, /* field[22] = FnSlpAcc */ 23, /* field[23] = FnSlpDec */ 24, /* field[24] = FsSpd */ + 25, /* field[25] = GateCfg1 */ + 26, /* field[26] = GateCfg2 */ 0, /* field[0] = HardwareMotorType */ 6, /* field[6] = HighLengthMicroSecond */ 21, /* field[21] = IntSpd */ @@ -380,12 +490,19 @@ static const unsigned hardware_motor__field_indices_by_name[] = { 7, /* field[7] = SpeedMaster */ 20, /* field[20] = StSlp */ 17, /* field[17] = StallThreshold */ + 31, /* field[31] = TFast */ + 33, /* field[33] = TOffMin */ + 32, /* field[32] = TOnMin */ 18, /* field[18] = ThermalCompensationFactor */ + 29, /* field[29] = TvalAcc */ + 30, /* field[30] = TvalDec */ + 27, /* field[27] = TvalHold */ + 28, /* field[28] = TvalRun */ }; static const ProtobufCIntRange hardware_motor__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 25 } + { 0, 34 } }; const ProtobufCMessageDescriptor hardware_motor__descriptor = { @@ -395,7 +512,7 @@ const ProtobufCMessageDescriptor hardware_motor__descriptor = "HardwareMotor", "", sizeof(HardwareMotor), - 25, + 34, hardware_motor__field_descriptors, hardware_motor__field_indices_by_name, 1, hardware_motor__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h index 04ef5ba5c..789e1e139 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h @@ -77,10 +77,28 @@ struct _HardwareMotor int32_t fnslpdec; protobuf_c_boolean has_fsspd; int32_t fsspd; + protobuf_c_boolean has_gatecfg1; + uint32_t gatecfg1; + protobuf_c_boolean has_gatecfg2; + uint32_t gatecfg2; + protobuf_c_boolean has_tvalhold; + uint32_t tvalhold; + protobuf_c_boolean has_tvalrun; + uint32_t tvalrun; + protobuf_c_boolean has_tvalacc; + uint32_t tvalacc; + protobuf_c_boolean has_tvaldec; + uint32_t tvaldec; + protobuf_c_boolean has_tfast; + uint32_t tfast; + protobuf_c_boolean has_tonmin; + uint32_t tonmin; + protobuf_c_boolean has_toffmin; + uint32_t toffmin; }; #define HARDWARE_MOTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&hardware_motor__descriptor) \ - , 0, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* HardwareMotor methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c index be7dcf517..c6943acfa 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c @@ -7,7 +7,7 @@ #endif #include "HardwareMotorType.pb-c.h" -static const ProtobufCEnumValue hardware_motor_type__enum_values_by_number[29] = +static const ProtobufCEnumValue hardware_motor_type__enum_values_by_number[30] = { { "MOTO_DH_CLEANHEAD", "HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD", 0 }, { "MOTO_DH_CLEANMECH", "HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH", 1 }, @@ -38,11 +38,12 @@ static const ProtobufCEnumValue hardware_motor_type__enum_values_by_number[29] = { "MOTO_SPARE1_2", "HARDWARE_MOTOR_TYPE__MOTO_SPARE1_2", 26 }, { "MOTO_SPARE2_1", "HARDWARE_MOTOR_TYPE__MOTO_SPARE2_1", 27 }, { "MOTO_SPARE2_2", "HARDWARE_MOTOR_TYPE__MOTO_SPARE2_2", 28 }, + { "MOTO_SPARE3_1", "HARDWARE_MOTOR_TYPE__MOTO_SPARE3_1", 29 }, }; static const ProtobufCIntRange hardware_motor_type__value_ranges[] = { -{0, 0},{0, 29} +{0, 0},{0, 30} }; -static const ProtobufCEnumValueIndex hardware_motor_type__enum_values_by_name[29] = +static const ProtobufCEnumValueIndex hardware_motor_type__enum_values_by_name[30] = { { "MOTO_DH_CLEANHEAD", 0 }, { "MOTO_DH_CLEANMECH", 1 }, @@ -72,6 +73,7 @@ static const ProtobufCEnumValueIndex hardware_motor_type__enum_values_by_name[29 { "MOTO_SPARE1_2", 26 }, { "MOTO_SPARE2_1", 27 }, { "MOTO_SPARE2_2", 28 }, + { "MOTO_SPARE3_1", 29 }, { "MOTO_WINDER", 15 }, }; const ProtobufCEnumDescriptor hardware_motor_type__descriptor = @@ -81,9 +83,9 @@ const ProtobufCEnumDescriptor hardware_motor_type__descriptor = "HardwareMotorType", "HardwareMotorType", "", - 29, + 30, hardware_motor_type__enum_values_by_number, - 29, + 30, hardware_motor_type__enum_values_by_name, 1, hardware_motor_type__value_ranges, diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index c9a3a4f38..f0cfb109c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -76,6 +76,16 @@ typedef struct int32_t fnslpacc; int32_t fnslpdec; int32_t fsspd; + uint32_t gatecfg1; + uint32_t gatecfg2; + uint32_t tvalhold; + uint32_t tvalrun; + uint32_t tvalacc; + uint32_t tvaldec; + uint32_t tfast; + uint32_t tonmin; + uint32_t toffmin; + }MotorDriverConfigStruc; //#define MotorDriverConfigStruc HardwareMotor diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 6c561a303..5667d4f48 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -293,6 +293,7 @@ int main(void) LOG_ERROR (iFResult, "Error during init Flash File System"); assert(iFResult); } + //FlashInitAndLoad(); //Control_File_System();// test file system //IDS_ModuleInit(); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index c67f50705..84c232ffc 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -382,6 +382,8 @@ uint32_t AlarmHandlingLoadFile(void) { ReadAppAndProgram(AlarmItem, Bytes,buffer); free (buffer); + Report("AlarmHandlingLoadFile", __FILE__,__LINE__,Bytes, RpMessage, Fresult, 0); + } return Bytes; } diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 2871a31c8..627ef84cd 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -149,116 +149,113 @@ uint32_t HWConfigurationInit(void) } char EmbeddedParametersPath[50] = "0://SysInfo//EmbParam.cfg"; -ConfigurationParameters EmbeddedParameters; +ConfigurationParameters *EmbeddedParameters; bool DataUpdated = false; void LoadConfigurationParameters(ConfigurationParameters *Params) { if (Params == 0) { - configuration_parameters__init(&EmbeddedParameters); - EmbeddedParameters.has_breaksensorlimit = true; - EmbeddedParameters.breaksensorlimit = 10; - EmbeddedParameters.has_diagnosticcollectionlimit = true; - EmbeddedParameters.diagnosticcollectionlimit = 1; - EmbeddedParameters.has_overheatcountlimit = true; - EmbeddedParameters.overheatcountlimit = 3; - EmbeddedParameters.has_underheatcountlimit = true; - EmbeddedParameters.underheatcountlimit = 3; - EmbeddedParameters.has_closevalvetimeout = true; - EmbeddedParameters.closevalvetimeout = 250; - EmbeddedParameters.has_openvalvetimeout = true; - EmbeddedParameters.openvalvetimeout = 250; - EmbeddedParameters.has_initialdispenserpressure = true; - EmbeddedParameters.initialdispenserpressure = 1.08; - EmbeddedParameters.has_initialdispensertimeout = true; - EmbeddedParameters.initialdispensertimeout = 60000; - EmbeddedParameters.has_initialdispensertimelag = true; - EmbeddedParameters.initialdispensertimelag = 100; - EmbeddedParameters.has_dispenserbuildpressurespeed = true; - EmbeddedParameters.dispenserbuildpressurespeed=500; - EmbeddedParameters.has_dispenserbuildpressurelimit = true; - EmbeddedParameters.dispenserbuildpressurelimit=0.8 ; - EmbeddedParameters.has_dispenserbuildpressuretimeout = true; - EmbeddedParameters.dispenserbuildpressuretimeout=60000; - EmbeddedParameters.has_dispenserbuildpressurelag = true; - EmbeddedParameters.dispenserbuildpressurelag=50; - EmbeddedParameters.has_acheatersloweroperationlimit = true; - EmbeddedParameters.acheatersloweroperationlimit = 980; - EmbeddedParameters.has_acheatersupperoperationlimit = true; - EmbeddedParameters.acheatersupperoperationlimit = 1005; - EmbeddedParameters.has_dcheatersloweroperationlimit = true; - EmbeddedParameters.dcheatersloweroperationlimit = 978; - EmbeddedParameters.has_dcheatersupperoperationlimit = true; - EmbeddedParameters.dcheatersupperoperationlimit = 1002; - EmbeddedParameters.has_midtankpressurecorrection = true; - EmbeddedParameters.midtankpressurecorrection = 0.0; - EmbeddedParameters.has_dispenserpresegmentwfcf = true; - EmbeddedParameters.dispenserpresegmentwfcf = 80; - EmbeddedParameters.has_startheatingoninitsequence = true; - EmbeddedParameters.startheatingoninitsequence = true; //set to true shlomo 14/5/2019 -//size_t n_generalparameters; -// EmbeddedParameters.*generalparameters; - EmbeddedParameters.generalparameters = malloc (sizeof(double)*10); - if (EmbeddedParameters.generalparameters) + EmbeddedParameters = my_malloc(sizeof(ConfigurationParameters)); + configuration_parameters__init(EmbeddedParameters); + EmbeddedParameters->breaksensorlimit = 10; + EmbeddedParameters->has_diagnosticcollectionlimit = true; + EmbeddedParameters->diagnosticcollectionlimit = 1; + EmbeddedParameters->has_overheatcountlimit = true; + EmbeddedParameters->overheatcountlimit = 3; + EmbeddedParameters->has_underheatcountlimit = true; + EmbeddedParameters->underheatcountlimit = 3; + EmbeddedParameters->has_closevalvetimeout = true; + EmbeddedParameters->closevalvetimeout = 250; + EmbeddedParameters->has_openvalvetimeout = true; + EmbeddedParameters->openvalvetimeout = 250; + EmbeddedParameters->has_initialdispenserpressure = true; + EmbeddedParameters->initialdispenserpressure = 1.08; + EmbeddedParameters->has_initialdispensertimeout = true; + EmbeddedParameters->initialdispensertimeout = 60000; + EmbeddedParameters->has_initialdispensertimelag = true; + EmbeddedParameters->initialdispensertimelag = 100; + EmbeddedParameters->has_dispenserbuildpressurespeed = true; + EmbeddedParameters->dispenserbuildpressurespeed=500; + EmbeddedParameters->has_dispenserbuildpressurelimit = true; + EmbeddedParameters->dispenserbuildpressurelimit=0.8 ; + EmbeddedParameters->has_dispenserbuildpressuretimeout = true; + EmbeddedParameters->dispenserbuildpressuretimeout=60000; + EmbeddedParameters->has_dispenserbuildpressurelag = true; + EmbeddedParameters->dispenserbuildpressurelag=50; + EmbeddedParameters->has_acheatersloweroperationlimit = true; + EmbeddedParameters->acheatersloweroperationlimit = 980; + EmbeddedParameters->has_acheatersupperoperationlimit = true; + EmbeddedParameters->acheatersupperoperationlimit = 1005; + EmbeddedParameters->has_dcheatersloweroperationlimit = true; + EmbeddedParameters->dcheatersloweroperationlimit = 978; + EmbeddedParameters->has_dcheatersupperoperationlimit = true; + EmbeddedParameters->dcheatersupperoperationlimit = 1002; + EmbeddedParameters->has_midtankpressurecorrection = true; + EmbeddedParameters->midtankpressurecorrection = 0.0; + EmbeddedParameters->has_dispenserpresegmentwfcf = true; + EmbeddedParameters->dispenserpresegmentwfcf = 80; + EmbeddedParameters->has_startheatingoninitsequence = true; + EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019 + EmbeddedParameters->generalparameters = malloc (sizeof(double)*10); + if (EmbeddedParameters->generalparameters) { - EmbeddedParameters.generalparameters[0] = 1.0; //CheckHardLimitAlarms - EmbeddedParameters.generalparameters[1] = 0.0; //CheckCurrentAlarms - EmbeddedParameters.generalparameters[2] = 0.0; //CheckTamperAlarms - EmbeddedParameters.generalparameters[3] = 800.0; //Winder homing time at end of job - //EmbeddedParameters.generalparameters[4] = 1.0; //Dispenser initial pressure limit - //EmbeddedParameters.generalparameters[5] = 1.0; //Dispenser initial pressure speed + EmbeddedParameters->generalparameters[0] = 1.0; //CheckHardLimitAlarms + EmbeddedParameters->generalparameters[1] = 0.0; //CheckCurrentAlarms + EmbeddedParameters->generalparameters[2] = 0.0; //CheckTamperAlarms + EmbeddedParameters->generalparameters[3] = 800.0; //Winder homing time at end of job + //EmbeddedParameters->generalparameters[4] = 1.0; //Dispenser initial pressure limit + //EmbeddedParameters->generalparameters[5] = 1.0; //Dispenser initial pressure speed } - EmbeddedParameters.has_currentalarmlowlimit = true; - EmbeddedParameters.currentalarmlowlimit = 0.80; - EmbeddedParameters.has_currentalarmhighlimit = true; - EmbeddedParameters.currentalarmhighlimit= 1.07; - EmbeddedParameters.has_ids_segmentrefilltimeout = true; - EmbeddedParameters.ids_segmentrefilltimeout = 5000; - EmbeddedParameters.has_ids_presegmentbuilduptime = true; - EmbeddedParameters.ids_presegmentbuilduptime = 5000; - EmbeddedParameters.has_ids_cleaningspeed = true; - EmbeddedParameters.ids_cleaningspeed = 50; - EmbeddedParameters.has_ids_cleaningstopbeforesegmenttime = true; - EmbeddedParameters.ids_cleaningstopbeforesegmenttime = 3000; - EmbeddedParameters.has_ids_cleaningstartspraypresegmenttime = true; - EmbeddedParameters.ids_cleaningstartspraypresegmenttime = 1000; - EmbeddedParameters.has_ids_leftcleaningmotorspeed = true; - EmbeddedParameters.ids_leftcleaningmotorspeed = 30; - EmbeddedParameters.has_ids_rightcleaningmotorspeed = true; - EmbeddedParameters.ids_rightcleaningmotorspeed = 23; - EmbeddedParameters.has_switchtoidletimeinseconds = true; - EmbeddedParameters.switchtoidletimeinseconds = 3600; - EmbeddedParameters.has_idledriertemperature = true; - EmbeddedParameters.idledriertemperature = 80; - EmbeddedParameters.has_idleheadtemperature = true; - EmbeddedParameters.idleheadtemperature = 80; - EmbeddedParameters.has_idlemixertemperature = true; - EmbeddedParameters.idlemixertemperature = 0; - EmbeddedParameters.has_powerofftemperaturelimit = true; - EmbeddedParameters.powerofftemperaturelimit = 50; - EmbeddedParameters.has_ids_presegment_wfcf_timebeforesegment = true; - EmbeddedParameters.ids_presegment_wfcf_timebeforesegment = 1500; - uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(&EmbeddedParameters)); + EmbeddedParameters->has_currentalarmlowlimit = true; + EmbeddedParameters->currentalarmlowlimit = 0.80; + EmbeddedParameters->has_currentalarmhighlimit = true; + EmbeddedParameters->currentalarmhighlimit= 1.07; + EmbeddedParameters->has_ids_segmentrefilltimeout = true; + EmbeddedParameters->ids_segmentrefilltimeout = 5000; + EmbeddedParameters->has_ids_presegmentbuilduptime = true; + EmbeddedParameters->ids_presegmentbuilduptime = 5000; + EmbeddedParameters->has_ids_cleaningspeed = true; + EmbeddedParameters->ids_cleaningspeed = 50; + EmbeddedParameters->has_ids_cleaningstopbeforesegmenttime = true; + EmbeddedParameters->ids_cleaningstopbeforesegmenttime = 3000; + EmbeddedParameters->has_ids_cleaningstartspraypresegmenttime = true; + EmbeddedParameters->ids_cleaningstartspraypresegmenttime = 1000; + EmbeddedParameters->has_ids_leftcleaningmotorspeed = true; + EmbeddedParameters->ids_leftcleaningmotorspeed = 30; + EmbeddedParameters->has_ids_rightcleaningmotorspeed = true; + EmbeddedParameters->ids_rightcleaningmotorspeed = 23; + EmbeddedParameters->has_switchtoidletimeinseconds = true; + EmbeddedParameters->switchtoidletimeinseconds = 3600; + EmbeddedParameters->has_idledriertemperature = true; + EmbeddedParameters->idledriertemperature = 80; + EmbeddedParameters->has_idleheadtemperature = true; + EmbeddedParameters->idleheadtemperature = 80; + EmbeddedParameters->has_idlemixertemperature = true; + EmbeddedParameters->idlemixertemperature = 0; + EmbeddedParameters->has_powerofftemperaturelimit = true; + EmbeddedParameters->powerofftemperaturelimit = 50; + EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true; + EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 1500; + uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters)); size_t response_size = 0; if (response_buffer) { - response_size = configuration_parameters__pack(&EmbeddedParameters, response_buffer); + response_size = configuration_parameters__pack(EmbeddedParameters, response_buffer); + //FileWrite(response_buffer,response_size,EmbeddedParametersPath); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&response_size); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, response_size, response_buffer); + my_free(response_buffer); } - FileWrite(response_buffer,response_size,EmbeddedParametersPath); - my_free(response_buffer); } else { - memcpy (&EmbeddedParameters,Params,sizeof(EmbeddedParameters)); + EmbeddedParameters = Params; } - uint32_t Bytes = sizeof(EmbeddedParameters); - ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); - ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, Bytes, &EmbeddedParameters); } uint32_t EmbeddedParametersInit(void) { FRESULT Fresult = FR_OK; - //void* buffer = NULL; + void* buffer = NULL; uint32_t Bytes = 0; ConfigurationParameters *Params; @@ -267,35 +264,44 @@ uint32_t EmbeddedParametersInit(void) if ((Bytes)&&(Bytes < 1000)) { - Params = (ConfigurationParameters *)(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4); - memcpy (&EmbeddedParameters,Params,sizeof(EmbeddedParameters)); + Params = configuration_parameters__unpack(NULL, Bytes, (void *)(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4)); + LoadConfigurationParameters(Params); + Report("LoadConfigurationParameters from flash", __FILE__,__LINE__,Bytes, RpMessage, Fresult, 0); } else { - LoadConfigurationParameters(0); + if (LoadConfigurationParamsFromFile()!=OK) + { + LoadConfigurationParameters(0); + Report("LoadConfigurationParameters default", __FILE__,__LINE__,0, RpMessage, Fresult, 0); + } + else + { + Report("LoadConfigurationParameters from file", __FILE__,__LINE__,EmbeddedParameters->closevalvetimeout, RpMessage, Fresult, 0); + } } - IDS_Dispenser_SetTimeOutValues(EmbeddedParameters.closevalvetimeout, EmbeddedParameters.openvalvetimeout); - IDS_Dispenser_SetBackLashValues(EmbeddedParameters.initialdispenserpressure, EmbeddedParameters.initialdispensertimeout, EmbeddedParameters.initialdispensertimelag); - IDS_Dispenser_SetPrepareValues(EmbeddedParameters.dispenserbuildpressurespeed, EmbeddedParameters.dispenserbuildpressurelimit, EmbeddedParameters.dispenserbuildpressuretimeout, EmbeddedParameters.dispenserbuildpressurelag); - IDS_Dispenser_SetPreSegmentWFCFValues(EmbeddedParameters.dispenserpresegmentwfcf, EmbeddedParameters.ids_presegment_wfcf_timebeforesegment); - IDS_Dispenser_SetPreSegmentCleaningValues(EmbeddedParameters.ids_cleaningspeed,EmbeddedParameters.ids_cleaningstartspraypresegmenttime ,EmbeddedParameters.ids_cleaningstopbeforesegmenttime,EmbeddedParameters.ids_leftcleaningmotorspeed,EmbeddedParameters.ids_rightcleaningmotorspeed); + IDS_Dispenser_SetTimeOutValues(EmbeddedParameters->closevalvetimeout, EmbeddedParameters->openvalvetimeout); + IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag); + IDS_Dispenser_SetPrepareValues(EmbeddedParameters->dispenserbuildpressurespeed, EmbeddedParameters->dispenserbuildpressurelimit, EmbeddedParameters->dispenserbuildpressuretimeout, EmbeddedParameters->dispenserbuildpressurelag); + IDS_Dispenser_SetPreSegmentWFCFValues(EmbeddedParameters->dispenserpresegmentwfcf, EmbeddedParameters->ids_presegment_wfcf_timebeforesegment); + IDS_Dispenser_SetPreSegmentCleaningValues(EmbeddedParameters->ids_cleaningspeed,EmbeddedParameters->ids_cleaningstartspraypresegmenttime ,EmbeddedParameters->ids_cleaningstopbeforesegmenttime,EmbeddedParameters->ids_leftcleaningmotorspeed,EmbeddedParameters->ids_rightcleaningmotorspeed); - Heaters_SetOverHeatTimeOutValues( EmbeddedParameters.overheatcountlimit, EmbeddedParameters.underheatcountlimit); - Heaters_SetOperationLimits(EmbeddedParameters.acheatersloweroperationlimit,EmbeddedParameters.acheatersupperoperationlimit,EmbeddedParameters.dcheatersloweroperationlimit,EmbeddedParameters.dcheatersupperoperationlimit); - MidTankPressureCorrection(EmbeddedParameters.midtankpressurecorrection); - SetDiagnosticCollectionLimit(EmbeddedParameters.diagnosticcollectionlimit); - ThreadSetBreakSensorLimit(EmbeddedParameters.breaksensorlimit); - PowerOffSetTemperatureThreshold(EmbeddedParameters.powerofftemperaturelimit); + Heaters_SetOverHeatTimeOutValues( EmbeddedParameters->overheatcountlimit, EmbeddedParameters->underheatcountlimit); + Heaters_SetOperationLimits(EmbeddedParameters->acheatersloweroperationlimit,EmbeddedParameters->acheatersupperoperationlimit,EmbeddedParameters->dcheatersloweroperationlimit,EmbeddedParameters->dcheatersupperoperationlimit); + MidTankPressureCorrection(EmbeddedParameters->midtankpressurecorrection); + SetDiagnosticCollectionLimit(EmbeddedParameters->diagnosticcollectionlimit); + ThreadSetBreakSensorLimit(EmbeddedParameters->breaksensorlimit); + PowerOffSetTemperatureThreshold(EmbeddedParameters->powerofftemperaturelimit); - InitSequenceSetStartHeating (EmbeddedParameters.startheatingoninitsequence); + InitSequenceSetStartHeating (EmbeddedParameters->startheatingoninitsequence); bool a1,a2,a3; - a1 = (EmbeddedParameters.generalparameters[0] < 0.5)?false:true; - a2 = (EmbeddedParameters.generalparameters[1] < 0.5)?false:true; - a3 = (EmbeddedParameters.generalparameters[2] < 0.5)?false:true; + a1 = (EmbeddedParameters->generalparameters[0] < 0.5)?false:true; + a2 = (EmbeddedParameters->generalparameters[1] < 0.5)?false:true; + a3 = (EmbeddedParameters->generalparameters[2] < 0.5)?false:true; AlarmHandlingSetFlags(a1,a2,a3); - PowerIdleSetParameters(EmbeddedParameters.switchtoidletimeinseconds,EmbeddedParameters.idledriertemperature,EmbeddedParameters.idleheadtemperature,EmbeddedParameters.idlemixertemperature); + PowerIdleSetParameters(EmbeddedParameters->switchtoidletimeinseconds,EmbeddedParameters->idledriertemperature,EmbeddedParameters->idleheadtemperature,EmbeddedParameters->idlemixertemperature); return Fresult; } @@ -347,10 +353,8 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) if (request->n_motors < NUM_OF_MOTORS) { - //EraseFlashSection(GENHWCFG_MAP_IN_FLASH + 0x2000,sizeof(HardwareMotor)*request->n_motors); - - for (Motor_i = 0; Motor_i < request->n_motors ; Motor_i++) - status += MotorsConfigMessage(request->motors[Motor_i]); + //for (Motor_i = 0; Motor_i < request->n_motors ; Motor_i++) + status += MotorsConfigMessage(request); } else { @@ -521,6 +525,28 @@ void HWSystemResetRequest(MessageContainer* requestContainer) } uint32_t FlashInitResults[5] = {0,0,0,0,0}; +uint32_t LoadConfigurationParamsFromFile(void) +{ + FRESULT Fresult = FR_OK; + uint8_t* buffer = NULL; + uint32_t Bytes = 0; + + ConfigurationParameters *Params = NULL; + + Fresult = FileRead(EmbeddedParametersPath, &Bytes, &buffer); + if (Fresult == FR_OK) + { + Params = configuration_parameters__unpack(NULL, Bytes, buffer); + LoadConfigurationParameters(Params); + free (buffer); + //configuration_parameters__free_unpacked(Params,NULL); + FlashInitResults[1] = true; + Report("Parameters Initialized from file", __FILE__,__LINE__,Bytes, RpMessage, EMBEDDED_PARAMETERS_MAP_IN_FLASH, 0); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, Bytes, buffer); + } + return Fresult; +} void FlashInitAndLoad(void) { FRESULT Fresult = FR_OK; @@ -534,7 +560,7 @@ void FlashInitAndLoad(void) char ProcessParamsPath[50] = "0://SysInfo//ProcessP.cfg"; #ifdef WATCHDOG ROM_WatchdogResetDisable(WATCHDOG0_BASE); - uint32_t timeout = 120000000*35; + uint32_t timeout = 0xFFFFFFFFU; ROM_WatchdogReloadSet(WATCHDOG0_BASE, timeout); #endif @@ -569,8 +595,11 @@ void FlashInitAndLoad(void) { Params = configuration_parameters__unpack(NULL, Bytes, buffer); LoadConfigurationParameters(Params); + //Bytes = sizeof(EmbeddedParameters); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, Bytes, buffer); free (buffer); - configuration_parameters__free_unpacked(Params,NULL); + //configuration_parameters__free_unpacked(Params,NULL); FlashInitResults[1] = true; Report("Parameters Initialized from file", __FILE__,__LINE__,sizeof(EmbeddedParameters), RpMessage, EMBEDDED_PARAMETERS_MAP_IN_FLASH, 0); } @@ -580,9 +609,6 @@ void FlashInitAndLoad(void) FlashInitResults[1] = 2; Report("Parameters Initialized from default", __FILE__,__LINE__,sizeof(EmbeddedParameters), RpMessage, EMBEDDED_PARAMETERS_MAP_IN_FLASH, 0); } - Bytes = sizeof(EmbeddedParameters); - ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); - ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, Bytes, &EmbeddedParameters); Fresult = FileRead(ProcessParamsPath, &Bytes, &buffer); if (Fresult == FR_OK) diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h index 86f164977..338217e74 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h @@ -7,13 +7,13 @@ #include "PMR/common/MessageContainer.pb-c.h" #include "PMR/Hardware/HardwareBlower.pb-c.h" #include "PMR/EmbeddedParameters/ConfigurationParameters.pb-c.h" -extern ConfigurationParameters EmbeddedParameters; +extern ConfigurationParameters *EmbeddedParameters; extern uint32_t HWConfigurationFunc(MessageContainer* requestContainer); extern void HWSystemResetRequest(MessageContainer* requestContainer); uint32_t HWConfigurationInit(void); void FlashInitAndLoad(void); - +uint32_t LoadConfigurationParamsFromFile(void); extern HardwareBlower BlowerCfg; extern bool DataUpdated; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index aafc1c5a9..6ee11105f 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -195,7 +195,7 @@ void ProcessRequestFunc(MessageContainer* requestContainer) Bytes = sizeof(ProcessParameters); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); - REPORT_MSG(Bytes,"Bytes wrtie to flash"); + REPORT_MSG(Bytes,"Bytes write to flash"); } //////////////////////////////////////////////////////////////////////// @@ -237,51 +237,34 @@ void ProcessRequestFunc(MessageContainer* requestContainer) upload_process_parameters_request__free_unpacked(request,NULL); } -uint32_t ProcessParamsInit(void) +uint32_t LoadProcessParamsFromFile(void) { FRESULT Fresult = FR_OK; - //FIL *FileHandle = 0; //the system supports a single active file - //uint8_t* buffer = NULL; - uint32_t Bytes;// = 0,i,j,k=0; - //UploadProcessParametersRequest* request; -/* - FileHandle = my_malloc(sizeof(FIL)); - if (FileHandle) + uint8_t* buffer = NULL; + uint32_t Bytes = 0; + + Fresult = FileRead(ProcessParamsConfigPath, &Bytes, &buffer); + if (Fresult == FR_OK) { - Fresult = FileOpen(ProcessParamsConfigPath, &Bytes, FileHandle); - if (Fresult == FR_OK) - { - buffer = my_malloc (Bytes); - if (buffer) - { - for (i=0;i<=(Bytes/100);i++) - { - Fresult = f_read(FileHandle,&buffer[i*100],100,&j ); - k+=j; - } - if (k!=Bytes) - LOG_ERROR(k,"File read error"); + UploadProcessParametersRequest* request = upload_process_parameters_request__unpack(NULL, Bytes, buffer); + ProcessParameters* ProcessParams = request->processparameters; - request = upload_process_parameters_request__unpack(NULL, Bytes, buffer); - // ProcessParameters* ProcessParams = process_parameters__unpack(NULL, Bytes, buffer); - if (request) - { - ProcessParameters* ProcessParams = request->processparameters; - Fresult = HandleProcessParameters(ProcessParams); - //memcpy (&ProcessParametersKeep,ProcessParams,sizeof(ProcessParameters)); - upload_process_parameters_request__free_unpacked(request,NULL); - } - my_free (buffer); - } - f_close(FileHandle); - } - else + if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters { - LOG_ERROR(Fresult,"File open error"); + Bytes = sizeof(ProcessParameters); + ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); + REPORT_MSG(Bytes,"ProcessParameters Bytes write to flash"); + free (buffer); } - my_free (FileHandle); } -*/ + + return Fresult; +} +uint32_t ProcessParamsInit(void) +{ + FRESULT Fresult = FR_OK; + uint32_t Bytes; memcpy(&Bytes,(void *)PROCESS_PARAMETERS_MAP_IN_FLASH,sizeof(Bytes)); REPORT_MSG(Bytes,"Bytes read from flash"); @@ -291,6 +274,20 @@ uint32_t ProcessParamsInit(void) ProcessParameters* ProcessParams = (ProcessParameters *)(PROCESS_PARAMETERS_MAP_IN_FLASH+4); Fresult = HandleProcessParameters(ProcessParams); } + else + { + if (LoadProcessParamsFromFile()==OK) + { + memcpy(&Bytes,(void *)PROCESS_PARAMETERS_MAP_IN_FLASH,sizeof(Bytes)); + REPORT_MSG(Bytes,"ProcessParams Bytes read from flash"); + + if ((Bytes)&&(Bytes < 1000)) + { + ProcessParameters* ProcessParams = (ProcessParameters *)(PROCESS_PARAMETERS_MAP_IN_FLASH+4); + Fresult = HandleProcessParameters(ProcessParams); + } + } + } return Fresult; } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index c8836a2b4..d5b4867f0 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1047,7 +1047,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) { MotorSetMicroStep(HW_Motor_Id, MotorsCfg[HW_Motor_Id].microstep); } - if ((EnableIntersegment == true)&&(IntersegmentLength>0)) + if ((EnableIntersegment == true)&&(IntersegmentLength>0.1)&&(SegmentId>0)) { MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves CurrentDispenserSpeed[DispenserId] = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/RfidTagContent.h b/Software/Embedded_SW/Embedded/Modules/IFS/RfidTagContent.h new file mode 100644 index 000000000..0764f2862 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IFS/RfidTagContent.h @@ -0,0 +1,51 @@ +/* + * RfidTagContent.h + * + * Created on: Jul 8, 2019 + * Author: shlomo + */ + +#ifndef MODULES_IFS_RFIDTAGCONTENT_H_ +#define MODULES_IFS_RFIDTAGCONTENT_H_ + +#include "PMR/Rfid/RfidCartridgeSlot.pb-c.h" +#include "PMR/Rfid/RfidTagContent.pb-c.h" + +#include +#include "include.h" + + +#define MAX_CARTRIDGES (RFID_CARTRIDGE_SLOT__LowerWasteCartridge+1) +typedef struct RfidTagContent +{ + uint32_t UniqueId; + char SerialNumber[16]; + char FactoryId[3]; + int32_t FillingSystemId; + char ColorName[12]; + int32_t ColorCategory; + int32_t ColorTypeRevision; + int32_t CartridgeSize; + int32_t FilledInkVolume; + char InkBatchNum[10]; + char InkMFGDate[6]; + char InkEOLDate[6]; + char CartridgeFillingDate[6]; + char WasteFilledDate[6]; + int32_t PlugInCounter; + bool Inkfill; + bool InkUsed; + bool InkEmpty; + bool WasteEmpty; + bool WasteFilling; + bool WasteFull; + bool Blocked; + bool Fail; + int32_t WasteCounter; + char MachineIdInkUsed[16]; + char MachineIdWasteUsed[16]; +}; + + + +#endif /* MODULES_IFS_RFIDTAGCONTENT_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c new file mode 100644 index 000000000..347808d5e --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -0,0 +1,31 @@ +/* + * ifs.c + * + * Created on: Jul 8, 2019 + * Author: shlomo + */ +#include "PMR/Diagnostics/CartridgeSlot.pb-c.h" +#include "PMR/Diagnostics/CartridgeTagContent.pb-c.h" +#include "RfidTagContent.h" +#include + +#include +#include "include.h" + +RfidTagContent TagContent[MAX_CARTRIDGES]; +NFC_Tag NFCTag[MAX_CARTRIDGES]; +void TagInitialize(RfidTagContent* TagContent); + +void IFS_Init(void) +{ + int i; + for (i=0;i MotorControlConfig[index].m_ingnoreValue) { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 529e4d260..78203b236 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -40,11 +40,20 @@ int32_t BreakSensordebouncetimemilli = BREAK_SENSOR_LIMIT; HardwarePidControlType ThreadMotorIdToControlId[MAX_THREAD_MOTORS_NUM] = {HARDWARE_PID_CONTROL_TYPE__MotorFeeder,HARDWARE_PID_CONTROL_TYPE__MotorDryer,HARDWARE_PID_CONTROL_TYPE__MotorPooler,HARDWARE_PID_CONTROL_TYPE__MotorWinder,0}; //******************************************************************************************************************** -uint32_t MotorsConfigMessage(HardwareMotor * request) +uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) { uint32_t status = PASSED; - TimerMotors_t Motor_i; - Motor_i = request->hardwaremotortype; + TimerMotors_t Motor_i,MotorId; + MOTDRIVER_TYPE DriverType; + HardwareMotor *request; + if (HWrequest == NULL) + return ERROR; + for (MotorId = 0; MotorId < HWrequest->n_motors ; MotorId++) + { + request = HWrequest->motors[MotorId]; + if (request == NULL) + return ERROR; + Motor_i = request->hardwaremotortype; MotorsCfg[Motor_i].configword = request->configword; MotorsCfg[Motor_i].hardwaremotortype = request->hardwaremotortype; MotorsCfg[Motor_i].minfrequency = request->minfrequency; @@ -80,13 +89,21 @@ uint32_t MotorsConfigMessage(HardwareMotor * request) MotorsCfg[Motor_i].fnslpdec = request->fnslpdec; MotorsCfg[Motor_i].fsspd = request->fsspd; - status = MotorConfig( Motor_i, &MotorsCfg[Motor_i]); + MotorsCfg[Motor_i].gatecfg1 = request->gatecfg1; + MotorsCfg[Motor_i].gatecfg2 = request->gatecfg2; + MotorsCfg[Motor_i].tvalhold = request->tvalhold; + MotorsCfg[Motor_i].tvalrun = request->tvalrun ; + MotorsCfg[Motor_i].tvalacc = request->tvalacc ; + MotorsCfg[Motor_i].tvaldec = request->tvaldec ; + MotorsCfg[Motor_i].tfast = request->tfast ; + MotorsCfg[Motor_i].tonmin = request->tonmin ; + MotorsCfg[Motor_i].toffmin = request->toffmin ; + + status = MotorConfig( Motor_i, &MotorsCfg[Motor_i]); // if (Motor_i == MOTOR_RDRIVING) // ThreadInitialTestStub(request); - + } return status; -// } -// else return Motor_i; } uint32_t MotorPidRequestMessage(HardwarePidControl* request) diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index a03ab04b0..dbbcd64b4 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,3 +1,11 @@ +Embedded SW Release note - Version 1.4.2.0 +============================================================= +some bugs fixed in file download +fixed some problems in flash handling +new events - jobs (not yet handled +RFID preparation - IFS module, protobuf, driver - NOT IN GIT yet +combined driver - protobuf. NOT IN GIT yet +thread load - thread unload with winding - not tested yet Embedded SW Release note - Version 1.4.1.0 ============================================================= Move to length calculation FROM PULLER -- cgit v1.3.1 From 0f9ed0892d136072c1e5b82c14aa401e84a5ce4f Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 23 Jul 2019 18:30:48 +0300 Subject: Version 1.4.2.5 store data in EEPROM, thread loading, IDS datat store, IDS prepare with reduced ink usage --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 16 +++-- .../Embedded/Common/SWUpdate/FirmwareUpgrade.h | 1 + .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Common/Sys_PinOut_Config/MCU_MAIN_pinout.c | 1 + .../Embedded_SW/Embedded/Common/report/report.h | 2 +- .../Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c | 25 +++++-- .../Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c | 1 + .../Embedded/Drivers/Motors/MotorActions.c | 48 ++++++++----- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 40 +++++++++++ .../Embedded/Drivers/flash_ram/MCU_E2Prom.h | 27 ++++++++ Software/Embedded_SW/Embedded/Main.c | 7 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 6 +- .../Embedded/Modules/Control/MillisecTask.c | 2 + .../Embedded/Modules/Diagnostics/Diagnostics.c | 37 ++-------- .../Modules/Diagnostics/DiagnosticsJogging.c | 2 + .../Embedded/Modules/General/GeneralHardware.c | 15 ++-- .../Embedded_SW/Embedded/Modules/General/process.c | 2 + .../Embedded/Modules/Heaters/Heaters_print.c | 80 ++++++++++++++++++++++ .../Embedded/Modules/IDS/IDS_dispenser.c | 17 ++++- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 5 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 11 +-- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 45 +++++++++++- .../Embedded/Modules/Stubs_Handler/Stub_Dancer.c | 3 +- .../Embedded/Modules/Thread/ThreadLoad.c | 64 ++++++++++++----- .../Embedded/Modules/Thread/Thread_Winder.c | 2 +- .../Embedded/Modules/Thread/Thread_init.c | 22 ++++-- .../Embedded/Modules/Thread/Thread_print.c | 19 +++++ .../StateMachines/Initialization/PowerIdle.c | 7 ++ 28 files changed, 401 insertions(+), 108 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c create mode 100644 Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 77056213f..dabd5ff44 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -28,6 +28,7 @@ #include "Common/SWUpdate/FileSystem.h" #include "Modules/Control/Control.h" +#include "Modules/AlarmHandling/AlarmHandling.h" int NumberOfFiles = 0,CurrentRunningFile; int CurrentFileSize = 0; @@ -48,8 +49,8 @@ bool SwUpgradeActive(void) } uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { - //ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; - //MessageContainer responseContainer; + ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; + MessageContainer responseContainer; usnprintf(activateString, 1000, "file %d of %d bytes %d of %d",CurrentRunningFile,NumberOfFiles,vme_index,CurrentFileSize); @@ -61,9 +62,6 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) ActivateVersionControlId = 0xFF; else LOG_ERROR(255,"ActivateVersionCallBackFunction"); - return OK; - - /* responseContainer = createContainer(MESSAGE_TYPE__ActivateVersionResponse, ActivateToken, false, &response, &activate_version_response__pack, &activate_version_response__get_packed_size); responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); @@ -73,9 +71,13 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (Reboot == true) { + Task_sleep (120000000*5); Power_Reset(); } -*/ + return OK; + + + } int File_i = 0; @@ -121,7 +123,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) for (File_i = 0;File_in_filedescriptors;File_i++) { CurrentFileSize = -1; - vme_index = 0; + //vme_index = 0; switch(VersionPackage->filedescriptors[File_i]->destination) { case VERSION_FILE_DESTINATION__MCU: diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h index 6f817fe90..1d11a84b6 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h @@ -8,6 +8,7 @@ #ifndef COMMON_SWUPDATE_FIRMWAREUPGRADE_H_ #define COMMON_SWUPDATE_FIRMWAREUPGRADE_H_ +extern int CurrentFileSize; uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer); uint32_t ValidateVersionRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 5112fd730..9c02e609e 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,2}; +TangoVersion_t _gTangoVersion = {1,4,2,5}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c index bd9336db3..93ce6cf51 100644 --- a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c +++ b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c @@ -123,6 +123,7 @@ PinoutSet(void) MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOR); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOS); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOT); + MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0); // // Configure the GPIO Pin Mux for PD1 diff --git a/Software/Embedded_SW/Embedded/Common/report/report.h b/Software/Embedded_SW/Embedded/Common/report/report.h index 349bdb733..093481081 100644 --- a/Software/Embedded_SW/Embedded/Common/report/report.h +++ b/Software/Embedded_SW/Embedded/Common/report/report.h @@ -228,7 +228,7 @@ extern STATUS ReportMessage2Dist(DistributorHandle distributor, const char *mess * Return value: OK; or Report's return code **************************************************************************/ #define REPORT_IF_ERROR(condition, msg, error, severity, par1, par2) \ - ((condition) ? Report(REPORT_LINE(msg), error, severity, par1, par2) : OK) + ((condition) ? Report(msg, __FILE__,__LINE__, error, severity, par1, par2) : OK) /*----------------------------------------------------------------------------*/ /*---------------------- Report Tracing and Exceptions -----------------------*/ diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c index cb4b413e5..931044f82 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c @@ -16,6 +16,7 @@ #include "Modules/Control/Control.h" #include "Modules/Control/MillisecTask.h" +#include "Common/SWUpdate/FirmwareUpgrade.h" extern short int main_vme(); @@ -73,13 +74,29 @@ FRESULT FPGA_Programming_Up(FPGA_ID FPGA_Id, char * FullPath, bool IncludeReboot //break; } + FILINFO* fno; + fno = my_malloc(sizeof(FILINFO)); + if (fno == 0) + fresult = FR_DENIED; + else + { + memset (fno,0,sizeof(FILINFO)); + fresult = f_stat(FullPath,fno); + CurrentFileSize = fno->fsize; + free (fno); + } FileHandlevme = malloc(sizeof(FIL)); - fresult |= f_open(FileHandlevme, FullPath, FA_READ); - if(fresult != FR_OK) + if (FileHandlevme) { - return(fresult); + fresult |= f_open(FileHandlevme, FullPath, FA_READ); + if(fresult != FR_OK) + { + return(fresult); + } + Report(FullPath,__FILE__,__LINE__,CurrentFileSize,RpWarning,0,0); + + fresult = main_vme(); } - fresult = main_vme(); diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c index 0286d53a7..1d114f8ce 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c @@ -683,6 +683,7 @@ short int main_vme() *************************************************************/ short int siRetCode = 0; + vme_index = 0; /************************************************************* * * * Pass in the command line arguments to the entry point. * diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index a190730cb..911b31eed 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -133,7 +133,7 @@ MotorHomingDirectionEnum Motor_Id_to_LS_Direction[NUM_OF_MOTORS] = { }; uint32_t MotorGotoWithCallback (TimerMotors_t MotorId, uint32_t Steps, uint32_t LimitSwitchId,callback_fptr callback,uint32_t timeout) //TODO { - assert (callback); + //assert (callback); //assert (isValid(deviceId)); //call driver action to device id with the parameter @@ -151,7 +151,7 @@ uint32_t MotorGotoWithCallback (TimerMotors_t MotorId, uint32_t Steps, uint32_t } uint32_t MotorGotoWithBusyCallback (TimerMotors_t MotorId,bool direction, uint32_t Steps, callback_fptr callback,uint32_t timeout) //TODO { - assert (callback); + //assert (callback); //assert (isValid(deviceId)); //call driver action to device id with the parameter @@ -168,7 +168,7 @@ uint32_t MotorGotoWithBusyCallback (TimerMotors_t MotorId,bool direction, uint32 uint32_t MotorMoveWithCallback (TimerMotors_t MotorId,bool direction, uint32_t Steps, callback_fptr callback,uint32_t timeout) //TODO { - assert (callback); + //assert (callback); //assert (isValid(deviceId)); //call driver action to device id with the parameter @@ -185,7 +185,7 @@ uint32_t DryerBackLash = 0; uint32_t DrierZeroPosition = 0; bool DrierBackLashDirection = false; int CallbackCalls=0; -bool FirstCall = false; +int FirstCall = 0; uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) //TODO { uint32_t MotorId; @@ -197,20 +197,20 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / } MotorId = IfIndex&0xFF; MotorPosition = ArmPosition; - if (FirstCall) - { - FirstCall = false; - return OK; - } CallbackCalls++; if (CallbackCalls%20 == 0) { - REPORT_MSG(MotorPosition,"MotorVerifiedCallBackFunction"); +// REPORT_MSG(MotorPosition,"MotorVerifiedCallBackFunction"); + Report("Move_To_Stopper_Callback",__FILE__,__LINE__,MotorPosition,RpMessage,StoredMotorPosition[MotorId],0); //CallbackCalls = 0; } - Report("Move_To_Stopper_Callback",__FILE__,__LINE__,MotorPosition,RpMessage,StoredMotorPosition[MotorId],0); Read_Dryer_ENC_Position(); //trigger the next call + if (FirstCall<5) + { + FirstCall++; + return OK; + } //if (((abs(MotorPosition - StoredMotorPosition[MotorId])<=60)||(MotorGetDirection(MotorId)!=(1-DrierBackLashDirection)))&&(CallbackCalls>=10)) /*Motor did not move in the last time lag*/ if (abs(MotorPosition - StoredMotorPosition[MotorId])<=10) @@ -224,8 +224,10 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / Task_sleep(5); MotorMove(MotorId,DrierBackLashDirection,DryerBackLash ); Task_sleep(5); + if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM) + MotorStop(MotorId,Hard_Stop ); DrierZeroPosition = Read_Dryer_ENC_Position(); //trigger the next call - Report("MotorVerifiedCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,0,0); + Report("MotorVerifiedCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,DryerBackLash,0); //call the module callback if (MotorCallback[MotorId]) @@ -238,7 +240,7 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / } uint32_t MotorMoveToStopper (TimerMotors_t MotorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout) //TODO { - assert (callback); + //assert (callback); //assert (isValid(deviceId)); //call driver action to device id with the parameter @@ -251,9 +253,11 @@ uint32_t MotorMoveToStopper (TimerMotors_t MotorId,bool direction, uint32_t Spee MotorSetDirection( MotorId, direction); CallbackCalls = 0; - FirstCall = true; + FirstCall = 0; MotorGetPositionFromFPGA(MotorId); Task_sleep(5); + Read_Dryer_ENC_Position(); //trigger the next call + StoredMotorPosition[MotorId] = MotorGetPosition(MotorId); REPORT_MSG(StoredMotorPosition[MotorId],"MotorMoveToStopper initial position"); MotorSetSpeed (MotorId, Speed); @@ -273,7 +277,13 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea if (MotorControlId[MotorId] == 0xFF) return ERROR; - Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); + CallbackCalls++; + if (CallbackCalls%20 == 0) + { +// REPORT_MSG(MotorPosition,"MotorVerifiedCallBackFunction"); + Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); + //CallbackCalls = 0; + } if (DrierZeroPosition == ReadValue) //thread running identified { @@ -282,6 +292,8 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea MotorControlCallback[MotorId] = 0; MotorControlId[MotorId] = 0xFF; MotorStop(MotorId,Hard_Hiz); //TODO in run time limit switch just reverse direction + if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM) + MotorStop(MotorId,Hard_Stop ); //possibly: start regular control (speed etc) //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter ); @@ -294,7 +306,7 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea } uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callback,uint32_t timeout) { - assert (callback); + //assert (callback); uint32_t currentposition = 0; bool direction; //assert (isValid(deviceId)); @@ -332,7 +344,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb MotorSetDirection( MotorId, direction); MotorSetSpeed (MotorId, 5); - MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, eOneMillisecond,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); + MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, eTenMillisecond,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); MotorControlCallback[MotorId] = MotorMoveToDrierPositionCallBackFunction; return MotorControlId[MotorId]; @@ -340,7 +352,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb uint32_t MotorSetSpeedWithCallback (TimerMotors_t MotorId, uint32_t _freq, callback_fptr callback) //TODO { - assert (callback); + //assert (callback); MotorCallback[MotorId] = callback; MotorControlId[MotorId] = AddControlCallback( MotorSetSpeedCallBackFunction, eTenMillisecond, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c new file mode 100644 index 000000000..f3ca9615a --- /dev/null +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -0,0 +1,40 @@ +/* + * MCU_E2Prom.c + * + * Created on: July 22, 2019 + * Author: shlomo + */ + +#include "include.h" +#include +#include "MCU_E2Prom.h" +#include "driverlib/eeprom.h" + +uint32_t E2Prom_Data[MAX_EEPROM_STORAGE] = {0,0,0,0,0,0}; +uint32_t MCU_E2PromProgram(int Address,uint32_t Data) +{ + uint32_t Buffer = Data; + if (Address>=MAX_EEPROM_STORAGE) + return ERROR; + Report("MCU_E2PromProgram",__FILE__,__LINE__,Address,RpWarning,Data,0); + + return (EEPROMProgram((uint32_t *)&Buffer, Address*4, 4)); +} +uint32_t MCU_E2PromRead(int Address,uint32_t *Data) +{ + if (Address>=MAX_EEPROM_STORAGE) + return ERROR; + EEPROMRead((uint32_t *)Data,Address*4, 4); + Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,*Data,0); + + return OK; + +} +//Each word may not be subject to more than a specific number of programming cycles before an +//erase cycle is required. In other words, for any given word, FlashProgram can only be called +//twice before FlashErase is called. +void MCU_E2PromInit(void) +{ + EEPROMInit(); +} + diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h new file mode 100644 index 000000000..5beb6c62b --- /dev/null +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -0,0 +1,27 @@ +/* + * MCU_E2Prom.h + * + * Created on: Jul 21, 2019 + * Author: shlomo + */ + +#ifndef DRIVERS_FLASH_RAM_MCU_E2PROM_H_ +#define DRIVERS_FLASH_RAM_MCU_E2PROM_H_ + +typedef enum { + EEPROM_STORAGE_DATA_SIZE, + EEPROM_STORAGE_DANCER_0, + EEPROM_STORAGE_DANCER_1, + EEPROM_STORAGE_DANCER_2, + EEPROM_STORAGE_DRYER_CENTER, + EEPROM_STORAGE_DRYER_CYCLES, + MAX_EEPROM_STORAGE +}EEPROM_STORAGE_USAGE_ENUM; +uint32_t MCU_E2PromProgram(int Address,uint32_t Data); +uint32_t MCU_E2PromRead(int Address,uint32_t *Data); +void MCU_E2PromInit(void); + + + + +#endif /* DRIVERS_FLASH_RAM_MCU_E2PROM_H_ */ diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 5667d4f48..e04ce0d36 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -12,6 +12,7 @@ #include */ #include + #include "Drivers/USB_Communication/USBCDCD.h" #include "Drivers/I2C_Communication/I2C.h" #include "PMR/common/MessageContainer.pb-c.h" @@ -34,6 +35,7 @@ #include #include "drivers/Flash_ram/FlashProgram.h" +#include "drivers/Flash_ram/MCU_E2Prom.h" #include #include "Sys_PinOut_Config/MCU_MAIN_pinout.h" @@ -126,11 +128,11 @@ Void errHook(Error_Block *eb) ACTIVITY_RED_LED_ON; COMM_RED_LED_ON; - if (UpdateFlag == true) - return; site = Error_getSite(eb); eid = Error_getId(eb); eCode = Error_getCode(eb); + if (UpdateFlag == true) + return; FileHandle = my_malloc(sizeof(FIL)); if (FileHandle == 0) Fresult = FR_DENIED; @@ -230,6 +232,7 @@ int main(void) Init_All_I2C(); + MCU_E2PromInit(); #ifndef EVALUATION_BOARD STATUS_RED_LED_ON; diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index fc722a234..5bb5398d7 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -246,6 +246,9 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eHundredMillisecond,ALARM_SOURCE_TYPE__TemperatureAlarm,HEAD6_PT100, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6 ,270,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_6_OVERTEMPERATURE }, {eHundredMillisecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DRYER_TEMP1, HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature,270,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DRYER_ZONE_1_OVERTEMPERATURE }, + {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP1, 0,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, + {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP2, 1,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, + {eHundredMillisecond,ALARM_SOURCE_TYPE__CoversAlarm,FrontDoor1 ,1,false,true,DEBUG_LOG_CATEGORY__Error, 0xFF,5,EVENT_TYPE__FRONT_COVER_1_OPEN}, {eHundredMillisecond,ALARM_SOURCE_TYPE__CoversAlarm,FrontDoor2 ,1,false,true,DEBUG_LOG_CATEGORY__Error, 0xFF,5,EVENT_TYPE__FRONT_COVER_2_OPEN}, {eHundredMillisecond,ALARM_SOURCE_TYPE__CoversAlarm,FrontDoor3 ,1,false,true,DEBUG_LOG_CATEGORY__Error, 0xFF,5,EVENT_TYPE__FRONT_COVER_3_OPEN}, @@ -365,7 +368,7 @@ bool EventsNotificationRequestAccepted = false; uint32_t AlarmHandlingFlashLoad(void) { -// EraseFlashSection(ALARM_MAP_IN_FLASH,sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS); + EraseFlashSection(AlarmItem,sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS); ReadAppAndProgram(AlarmItem, sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS, HardCodedAlarmItem); // LOG_ERROR(AlarmItem[2].EventName,"Flash Test"); @@ -380,6 +383,7 @@ uint32_t AlarmHandlingLoadFile(void) Fresult = FileRead(AlarmStorePath, &Bytes, &buffer); if (Fresult == FR_OK) { + EraseFlashSection(AlarmItem,sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS); ReadAppAndProgram(AlarmItem, Bytes,buffer); free (buffer); ReportWithPackageFilter(AlarmFilter,"AlarmHandlingLoadFile", __FILE__,__LINE__,Bytes, RpMessage, Fresult, 0); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 7c15c6ae7..84e3bf56e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -544,6 +544,8 @@ uint32_t MillisecLowLoop(uint32_t tick) } ADC_TriggerCollection(); } + DispensersCollectionCall(); + } if ((O900Millisecond_Tick)&&(RapidPressureRead == false)) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 8427ebd4a..a22bfc815 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -137,7 +137,6 @@ typedef enum { DiagnosticsTrigger, DiagnosticsTenMiliTrigger, - DispensersCollectionTrigger, }DiagnosticsMessages; typedef struct DiagnosticsMessage{ @@ -386,8 +385,12 @@ void Diagnostic100msecCollection(void) for (i=0;imotortype; MotorStop(MotorId,Hard_Hiz); + if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM) + MotorStop(MotorId,Hard_Stop ); responseContainer = createContainer(MESSAGE_TYPE__MotorAbortJoggingResponse, requestContainer->token, false, &response, &motor_abort_jogging_response__pack, &motor_abort_jogging_response__get_packed_size); responseContainer.continuous = false; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 914d4f51c..52f4a3447 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -62,12 +62,14 @@ char HwConfigPath[50] = "0://SysInfo//GenHwCfg.cfg"; void *HWConfigurationLoadFromFile( uint32_t *NumOfBytes) { FRESULT Fresult = FR_OK; - FIL *FileHandle = 0; //the system supports a single active file uint8_t* buffer = NULL; - uint32_t Bytes = 0,i,j,k=0; *NumOfBytes = 0; - Fresult = FileRead(HwConfigPath, &Bytes, &buffer); + Fresult = FileRead(HwConfigPath, NumOfBytes, &buffer); + REPORT_IF_ERROR(Fresult, "HW Config File Read error", Fresult, RpError, buffer, 0); +// if (Fresult) +// Report("HW Config File Read error", __FILE__,__LINE__, Fresult, RpError, buffer, 0); + return buffer; } @@ -98,6 +100,7 @@ uint32_t HWConfigurationInit(void) buffer = HWConfigurationLoadFromFile(&Bytes); //load hardware config if (buffer) { + EraseFlashSection(GENHWCFG_MAP_IN_FLASH,Bytes+4); ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&Bytes); ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, Bytes, buffer); UploadRequest = upload_hardware_configuration_request__unpack(NULL, Bytes, buffer); @@ -187,7 +190,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->generalparameters[2] = 0.0; //CheckTamperAlarms EmbeddedParameters->generalparameters[3] = 0.0; //CheckMotorAlarms EmbeddedParameters->generalparameters[4] = 800.0; //Winder homing time at end of job - //EmbeddedParameters->generalparameters[5] = 1.0; //Dispenser initial pressure speed + EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed } EmbeddedParameters->has_currentalarmlowlimit = true; EmbeddedParameters->currentalarmlowlimit = 0.80; @@ -225,6 +228,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) { response_size = configuration_parameters__pack(EmbeddedParameters, response_buffer); //FileWrite(response_buffer,response_size,EmbeddedParametersPath); + EraseFlashSection(EMBEDDED_PARAMETERS_MAP_IN_FLASH,response_size+4); ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&response_size); ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, response_size, response_buffer); my_free(response_buffer); @@ -264,7 +268,7 @@ uint32_t EmbeddedParametersInit(void) } IDS_Dispenser_SetTimeOutValues(EmbeddedParameters->closevalvetimeout, EmbeddedParameters->openvalvetimeout); - IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag); + IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag,EmbeddedParameters->generalparameters[5]); IDS_Dispenser_SetPrepareValues(EmbeddedParameters->dispenserbuildpressurespeed, EmbeddedParameters->dispenserbuildpressurelimit, EmbeddedParameters->dispenserbuildpressuretimeout, EmbeddedParameters->dispenserbuildpressurelag); IDS_Dispenser_SetPreSegmentWFCFValues(EmbeddedParameters->dispenserpresegmentwfcf, EmbeddedParameters->ids_presegment_wfcf_timebeforesegment); IDS_Dispenser_SetPreSegmentCleaningValues(EmbeddedParameters->ids_cleaningspeed,EmbeddedParameters->ids_cleaningstartspraypresegmenttime ,EmbeddedParameters->ids_cleaningstopbeforesegmenttime,EmbeddedParameters->ids_leftcleaningmotorspeed,EmbeddedParameters->ids_rightcleaningmotorspeed); @@ -527,6 +531,7 @@ uint32_t LoadConfigurationParamsFromFile(void) //configuration_parameters__free_unpacked(Params,NULL); FlashInitResults[1] = true; Report("Parameters Initialized from file", __FILE__,__LINE__,Bytes, RpMessage, EMBEDDED_PARAMETERS_MAP_IN_FLASH, 0); + EraseFlashSection(EMBEDDED_PARAMETERS_MAP_IN_FLASH,Bytes+4); ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); ReadAppAndProgram(EMBEDDED_PARAMETERS_MAP_IN_FLASH+4, Bytes, buffer); } diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 6ee11105f..b968381c6 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -193,6 +193,7 @@ void ProcessRequestFunc(MessageContainer* requestContainer) { FileWrite(requestContainer->data.data, requestContainer->data.len,ProcessParamsConfigPath); Bytes = sizeof(ProcessParameters); + EraseFlashSection(PROCESS_PARAMETERS_MAP_IN_FLASH,Bytes+4); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); REPORT_MSG(Bytes,"Bytes write to flash"); @@ -252,6 +253,7 @@ uint32_t LoadProcessParamsFromFile(void) if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters { Bytes = sizeof(ProcessParameters); + EraseFlashSection(PROCESS_PARAMETERS_MAP_IN_FLASH,Bytes+4); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); REPORT_MSG(Bytes,"ProcessParameters Bytes write to flash"); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 179ac30d7..d60d5b840 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -192,15 +192,95 @@ void HeatersControlStop(void) HeatersRestart = false; } } + +//{eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP1, 0,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, +//{eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP2, 1,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, +typedef enum{ + ENCLOSURE_INTERNAL_TEMP, + CABINET_INTERNAL_TEMP, + MAIN_CARD_INTERNAL_TEMP, + MAX_INTERNAL_ALARMS +}; +int InternalAlarmCounter[MAX_INTERNAL_ALARMS] = {0,0,0}; +uint32_t InternalId2PT100Id[MAX_INTERNAL_ALARMS] = {TEMP_SENSE_AN_ENCLOSURETEMP1,TEMP_SENSE_AN_ENCLOSURETEMP1,0xFF}; +int32_t InternalOverHeatCounter [MAX_INTERNAL_ALARMS] = {0,0,0}; +bool InternalAlarmActive[MAX_INTERNAL_ALARMS] = {false,false,false}; +uint32_t ControlIdtoInternalId[MAX_INTERNAL_ALARMS] = {0xFF,0xFF,0xFF}; +uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValue) +{ + int index=MAX_HEATERS_NUM; + + if (IfIndex>>8 != IfTypeHeaters) + { + ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0); + return 0xFFFFFFFF; + } + index = IfIndex&0xFF; + if (index >= MAX_INTERNAL_ALARMS) //Enclosure pt100 + { + ReportWithPackageFilter(HeatersFilter, "Wrong Interface ",__FILE__,__LINE__,IfIndex,RpError, 0,0); + return 0xFFFFFFFF; + } + + readValue = MillisecGetTemperatures(InternalId2PT100Id[index]); + if((MINIMUM_HEATER_READ>=readValue)||(MAXIMUM_HEATER_READ < readValue)) + { + //ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); + return ERROR; + } + + // no test for spikes yet! + if (readValue >= 40.0) + { + if (InternalAlarmActive[index] == false) + { + if(InternalOverHeatCounter[index]++ >=Overheat_Count_Limit) + { + InternalOverHeatCounter[index] = Overheat_Count_Limit; + + InternalAlarmActive[index] = true; + ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature, turned off",__FILE__,index,readValue,RpWarning, 0,0); + AlarmHandlingSetAlarm(EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE, true); + } + } + } + else + { + if (InternalAlarmActive[index] == true) + { + if(InternalOverHeatCounter[index]-- <= 0) + { + InternalOverHeatCounter[index] = 0; + + InternalAlarmActive[index] = true; + ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature, turned off",__FILE__,index,readValue,RpWarning, 0,0); + AlarmHandlingSetAlarm(EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE, true); + } + + } + } + return OK; +} + + //#warning there is a need to separate the AC and DC heaters preparation! void HeatersControlStart(void) { + int i; if (HeatersRestart == false) { ReportWithPackageFilter(HeatersFilter,"HeatersControlStart ", __FILE__,__LINE__,0, RpMessage, 0, 0); HeatersRestart = true; HeatersStartControlTimer(); + for (i = 0; i< MAX_INTERNAL_ALARMS;i++) + { + if (ControlIdtoInternalId [i] == 0xFF) + { + ControlIdtoInternalId [i] = AddControlCallback( HeatersTestInternalAlarmsCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+i),0,0); + } + } } + } uint32_t LoadHeaterSetPoint(HeaterType HeaterType) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 0b5b4791a..6d7f0df96 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -276,6 +276,7 @@ void IDS_Dispenser_Content_Init (void) //================================== } uint16_t seconds_counter = 0; +bool DispenserDataUpdated = false; uint32_t IDS_Dispenser_Store_Data (void) { uint32_t timing = msec_millisecondCounter; @@ -293,11 +294,12 @@ uint32_t IDS_Dispenser_Store_Data (void) // Report("IDS_Dispenser_Store_Data 0",__FILE__,(int)IDS_Dispenser_Data[0].totalconsumedinnanolitter,(int)IDS_Dispenser_Data[0].consumedinnanolitter,RpWarning,(int)IDS_Dispenser_Data[0].microsteps,0); // Report("IDS_Dispenser_Store_Data 4",__FILE__,(int)IDS_Dispenser_Data[4].totalconsumedinnanolitter,(int)IDS_Dispenser_Data[4].consumedinnanolitter,RpWarning,(int)IDS_Dispenser_Data[4].microsteps,0); //response_size = dispenser_data__pack(&IDSDispenserData, response_buffer); + EraseFlashSection(DISPENSERS_MAP_IN_FLASH,response_size+4); ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH, 4,&response_size); ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, IDS_Dispenser_Data); Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath); - + DispenserDataUpdated = false; REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); return Status; } @@ -315,8 +317,9 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) //double consumedintimeframe = (double)(CurrentDispenserSpeed[DispenserId]); //pulses only //consumedintimeframe = 10+DispenserId; IDS_Dispenser_Data[DispenserId].consumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10);//100 milliseconds ==> speed/10 - if (CurrentDispenserSpeed[DispenserId]>0.0) + if (CurrentDispenserSpeed[DispenserId]>0.1) { + DispenserDataUpdated = true; IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10); if (seconds_counter%100 == 0) { @@ -325,7 +328,7 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) } if (DispenserId == 0) { - if (seconds_counter++>=600)//36000)// - one hour) + if ((seconds_counter++>=600)&&(DispenserDataUpdated == true))//36000)// - one hour) { seconds_counter = 0; if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter) @@ -336,6 +339,14 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) } } } +void DispensersCollectionCall(void) +{ + int i; + for (i = 0; ipvinputfilterfactormode > MAX_CONTROL_SAMPLES) request->pvinputfilterfactormode = MAX_CONTROL_SAMPLES; - ReadAppAndProgram(&DispensersControl[Dispenser_i], sizeof(HardwarePidControl), request); + //ReadAppAndProgram(&DispensersControl[Dispenser_i], sizeof(HardwarePidControl), request); for (i = 0;i < DispensersControl[Dispenser_i].pvinputfilterfactormode; i++) DispenserSamples[Dispenser_i][i] = 0; //reset the samples value for control beginning @@ -581,6 +581,8 @@ c. Go to step 2.a x Segment.BrushStopsCount. bool pressureReady = false; int i; int NumofReadyDispensers = 0; + TimerMotors_t HW_Motor_Id; + float updatedSpeed,tempSpeed; //REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback"); DispenserBuildTimeCounter+=PRESSURE_READ_TIME_GAP; @@ -595,8 +597,24 @@ c. Go to step 2.a x Segment.BrushStopsCount. //IDS_StopHomeDispenser(i); if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers { + HW_Motor_Id = DispenserIdToMotorId[i]; if (GetDispenserPressure(i) > DispenserPreparePressure) + { NumofReadyDispensers++; + tempSpeed = CurrentDispenserSpeed[i]; + updatedSpeed = (tempSpeed*0.95>100)?tempSpeed*0.95:100; + MotorSetSpeed(HW_Motor_Id, updatedSpeed); + CurrentDispenserSpeed[i] = updatedSpeed; + Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + } + else + { + tempSpeed = CurrentDispenserSpeed[i]; + updatedSpeed = (tempSpeed*1.1>1000)?tempSpeed*1.1:100; + MotorSetSpeed(HW_Motor_Id, updatedSpeed); + CurrentDispenserSpeed[i] = updatedSpeed; + Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + } } } @@ -804,7 +822,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); } } - if (InterSegmentStartWFCFDispensers == InterSegmentStepsCount) + if ((InterSegmentStartWFCFDispensers > 0)&&(InterSegmentStartWFCFDispensers == InterSegmentStepsCount)) { Report("start dispensers at rate * WFCF",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); if (FileBrushStop) @@ -950,7 +968,8 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) InterSegmentStartRocking = 1000; InterSegmentCenterRockers = 3000; } - InterSegmentStartWFCFDispensers = lInterSegmentLength-5000; + + InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength; } } /*if (SegmentId == 0)//first segment - running the DTS out of the drier @@ -1279,6 +1298,26 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady); } + //cleaning + + lInterSegmentLength = ((dryerbufferlength*100)*1000/dyeingspeed); + lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication + InterSegmentStepsCount = 0; + DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); + if (DispenserPreSegmentControlId == 0xFF) + { + Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); + return ERROR; + } + Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0); + if (EnableCleaning == true) + { + InterSegmentStartSprayCleaner = 500; + InterSegmentStartRocking = 1000; + InterSegmentCenterRockers = 3000; + } + InterSegmentStartWFCFDispensers = 0; + return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c index 03c05e105..213902038 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c @@ -82,7 +82,8 @@ void Stub_DancerPositionRequest(MessageContainer* requestContainer) response.detailed_status = ERROR; // use the Reserved bits to send our errors response.has_general_status = true; } - StoreDancerConfigMessage(); + if (Dancer_Id == 2) + StoreDancerConfigMessage(); responseContainer = createContainer(MESSAGE_TYPE__StubDancerPositionResponse, requestContainer->token, true, &response, &stub_dancer_position_response__pack, &stub_dancer_position_response__get_packed_size); //free(request); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 9ef7f3d0d..d2f6170cf 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -59,7 +59,7 @@ ProcessParameters ProcessParametersClear,ProcessParametersRecover; uint8_t NumberOfDrierLoaderCycles = 0; uint32_t status = OK; - uint32_t ControlId = 0xFF; + uint32_t ControlId = 0xFF,PullerControlId = 0xFF,WinderControlId = 0xFF; uint32_t ThreadLoadStateMachine( THREAD_LOAD_STAGES_ENUM LoadStages); uint32_t ThreadLoadControlCBFunction(uint32_t index, uint32_t ReadValue); uint32_t Thread_Load_Dryer_UnLoading(void); @@ -173,6 +173,24 @@ } uint32_t Thread_Load_Set_Load_Arm_To_Stopper_Callback(uint32_t deviceID, uint32_t BusyFlag) { + if(PullerControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[POOLER_MOTOR],Hard_Hiz); + RemoveControlCallback(PullerControlId, ThreadLoadControlCBFunction ); + PullerControlId = 0xFF; + } + if(WinderControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[WINDER_MOTOR],Hard_Hiz); + RemoveControlCallback(WinderControlId, ThreadLoadControlCBFunction ); + WinderControlId = 0xFF; + } + /*Task_sleep(5) + MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); + MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz);*/ + + MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,Hard_Hiz); + // Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); Report("Thread_Load_Set_Load_Arm_To_Stopper_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); NumberOfDrierLoaderCycles=0; @@ -374,15 +392,14 @@ return OK; } - uint32_t Thread_Load_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue) + uint32_t Thread_Load_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint32_t ReadValue) { - Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); - REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id"); - MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,0,0); if(ControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); + MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround); + ControlId = 0xFF; } if (CallbackCounter) @@ -399,6 +416,13 @@ } else LOG_ERROR(MotorId, "Thread_Load_HomingCallback Callback is already 0"); + + } + uint32_t Thread_Load_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue) + { + Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + //REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id"); + MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Dryer_MovetoEncoderPosition_Callback,10000); return OK; } @@ -413,6 +437,7 @@ // CurrentControlledSpeed[FEEDER_MOTOR] = 1000; numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*LoadArmInfo.LoadArmRounds*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius; + Report("Thread Load State Machine step.",__FILE__,LoadStages,numberOfSteps,RpMessage,(int)(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius),0); MotorControlConfig[FEEDER_MOTOR].m_params.MAX = 1; MotorControlConfig[FEEDER_MOTOR].m_params.MIN = MotorsControl[FEEDER_MOTOR].outputproportionalpowerlimit*-1; MotorControlConfig[FEEDER_MOTOR].m_params.Kd = MotorsControl[FEEDER_MOTOR].derivativetime; @@ -432,6 +457,8 @@ MotorControlConfig[FEEDER_MOTOR].m_SetParam = 0;//need to update SetParams on presegment stage MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize); + MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4); + ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); CallbackCounter++; MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, @@ -472,7 +499,7 @@ LoadArmInfo.LoadArmRounds = 0; uint32_t numberOfSteps = 0; //Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40 - SetOriginMotorSpeed(20); + SetOriginMotorSpeed(19); // OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000; // CurrentControlledSpeed[FEEDER_MOTOR] = 1000; @@ -496,7 +523,7 @@ MotorControlConfig[POOLER_MOTOR].m_SetParam = 0;//need to update SetParams on presegment stage MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDRIVING].directionthreadwize); - ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+POOLER_MOTOR),FEEDER_DANCER,POOLER_MOTOR); + PullerControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+POOLER_MOTOR),POOLER_DANCER,POOLER_MOTOR); //////////////////////// MotorControlConfig[WINDER_MOTOR].m_params.MAX = 1; MotorControlConfig[WINDER_MOTOR].m_params.MIN = MotorsControl[WINDER_MOTOR].outputproportionalpowerlimit*-1; @@ -515,18 +542,20 @@ MotorControlConfig[WINDER_MOTOR].m_mesuredParam = 0; MotorControlConfig[WINDER_MOTOR].m_preError = 0; MotorControlConfig[WINDER_MOTOR].m_SetParam = 0;//need to update SetParams on presegment stage - MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDRIVING].directionthreadwize); + MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize); - ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+WINDER_MOTOR),FEEDER_DANCER,WINDER_MOTOR); + WinderControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+WINDER_MOTOR),WINDER_DANCER,WINDER_MOTOR); //////////////////////// + MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING].directionthreadwize); + MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING, OriginalMotorSpd_2PPS[DRYER_MOTOR]); CallbackCounter++; //MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, // numberOfSteps, Thread_Load_Dryer_Loading_Callback, 100000); Report("Thread_Load_Set_Load_Arm_To_Start_Position",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); status |= MotorMoveToStopper(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, (1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize), - MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/2, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000); + MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000); //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; @@ -623,7 +652,14 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) uint32_t calculated_speed; double NormalizedError; - DancerId = FEEDER_DANCER;//ThreadMotorIdToDancerId[index]; + if (IfIndex>>8 != IfTypeThread) + { + LOG_ERROR (IfIndex, "Wrong Interface type"); + return 0xFFFFFFFF; + } + index = IfIndex&0xFF; + + DancerId = ThreadMotorIdToDancerId[index]; if (ReadValue < 10) { Report("Dancer value read too small.",__FILE__,__LINE__,DancerId,RpError,ReadValue,0); @@ -634,12 +670,6 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) return OK; } TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint; - if (IfIndex>>8 != IfTypeThread) - { - LOG_ERROR (IfIndex, "Wrong Interface type"); - return 0xFFFFFFFF; - } - index = IfIndex&0xFF; if (index == POOLER_MOTOR) { //pooler dancer is right sided: data is opposite diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index a113e4dae..510168ab8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -528,7 +528,7 @@ uint32_t ScrewDTSCallback(uint32_t deviceID, uint32_t BusyFlag) ScrewsStopControlTimer(); //move the cart to the edge so the spool can be easily replaced //MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].directionthreadwize, 1000, GPI_LS_SCREW_RIGHT, NULL,0); - MotorStop(HARDWARE_MOTOR_TYPE__MOTO_SCREW,Hard_Hiz); + //MotorStop(HARDWARE_MOTOR_TYPE__MOTO_SCREW,Hard_Hiz); MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].directionthreadwize, ScrewSpeed, GPI_LS_SCREW_RIGHT, WinderDistanceToSpoolEnded,2000); return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index cab3b592e..500ba9a39 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -19,6 +19,8 @@ #include "drivers/SSI_Comm/Dancer/Dancer.h" #include "drivers/Flash_ram/FlashProgram.h" +#include "drivers/Flash_ram/MCU_E2Prom.h" + #include "thread.h" MotorDriverConfigStruc MotorsCfg[NUM_OF_MOTORS]={0}; HardwarePidControl MotorsControl[MAX_THREAD_MOTORS_NUM] = {0}; @@ -162,6 +164,11 @@ uint32_t StoreDancerConfigMessage() DancerConfig.n_dancers++; DancersCfg[Dancer_i].zeropoint = DancerConfig.dancers[Dancer_i]->zeropoint; } + MCU_E2PromProgram(EEPROM_STORAGE_DANCER_0,DancersCfg[0].zeropoint); + MCU_E2PromProgram(EEPROM_STORAGE_DANCER_1,DancersCfg[1].zeropoint); + MCU_E2PromProgram(EEPROM_STORAGE_DANCER_2,DancersCfg[2].zeropoint); + Report("Store eeprom 0",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg[1].zeropoint,RpWarning,(int)DancersCfg[2].zeropoint,0); + response_buffer = my_malloc(hardware_configuration__get_packed_size(&DancerConfig)); if (response_buffer) { @@ -174,6 +181,7 @@ uint32_t StoreDancerConfigMessage() ReadAppAndProgram(DANCERS_MAP_IN_FLASH, sizeof(Dancers), Dancers); } + my_free(response_buffer); return Fresult; @@ -187,6 +195,7 @@ uint32_t LoadDancerConfigMessage() HardwareConfiguration *DancerConfig; int Dancer_i; HardwareDancer DancersCfg1[MAX_SYSTEM_DANCERS] = {0}; + HardwareDancer DancersCfg2[MAX_SYSTEM_DANCERS] = {0}; memcpy(DancersCfg1,(void *)DANCERS_MAP_IN_FLASH,sizeof(DancersCfg1)); @@ -196,16 +205,19 @@ uint32_t LoadDancerConfigMessage() DancerConfig = hardware_configuration__unpack(NULL, Bytes, buffer); for (Dancer_i = 0; Dancer_i < DancerConfig->n_dancers ; Dancer_i++) { - DancersCfg[Dancer_i].zeropoint = DancerConfig->dancers[Dancer_i]->zeropoint; + DancersCfg2[Dancer_i].zeropoint = DancerConfig->dancers[Dancer_i]->zeropoint; } hardware_configuration__free_unpacked(DancerConfig,NULL); free (buffer); } + MCU_E2PromRead(EEPROM_STORAGE_DANCER_0,&DancersCfg[0].zeropoint); + MCU_E2PromRead(EEPROM_STORAGE_DANCER_1,&DancersCfg[1].zeropoint); + MCU_E2PromRead(EEPROM_STORAGE_DANCER_2,&DancersCfg[2].zeropoint); + - if (DancersCfg[0].zeropoint != DancersCfg1[0].zeropoint) LOG_ERROR(DancersCfg[0].zeropoint,"DancersMismatch"); - else if (DancersCfg[1].zeropoint != DancersCfg1[1].zeropoint) LOG_ERROR(DancersCfg[1].zeropoint,"DancersMismatch"); - else if (DancersCfg[2].zeropoint != DancersCfg1[2].zeropoint) LOG_ERROR(DancersCfg[2].zeropoint,"DancersMismatch"); - else LOG_ERROR(DancersCfg[0].zeropoint,"Dancers Match!!"); + Report("Dancer 0 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg1[0].zeropoint,RpWarning,(int)DancersCfg2[0].zeropoint,0); + Report("Dancer 1 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[1].zeropoint,(int)DancersCfg1[1].zeropoint,RpWarning,(int)DancersCfg2[1].zeropoint,0); + Report("Dancer 2 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[2].zeropoint,(int)DancersCfg1[2].zeropoint,RpWarning,(int)DancersCfg2[2].zeropoint,0); return Fresult; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index eb1b751bb..528b83c1c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -539,6 +539,25 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) } BreakSensorCounter = 0; } + if (CurrentControlledSpeed[index] < (OriginalMotorSpd_2PPS[index]/3)) + { + BreakSensorCounter++; + BreakSensorLatchCounter++; + if (BreakSensorCounter>=BreakSensordebouncetimemilli) + { + //consider applying the debouce parameters later + usnprintf(TMessage, 60, "thread speed too low"); + JobEndReason = JOB_THREAD_BREAK; + ThreadControlActive = false; + SendJobProgress(0.0,0,false, TMessage); + SendSegmentFail(); + //AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true); + //EndState(CurrentJob,"ReadBreakSensor Error" ); + LOG_ERROR(index, "thread speed too low Error"); + return OK; + } + } + } } } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index b3fc8c052..c7f4ee3b7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -82,6 +82,9 @@ uint32_t PowerIdleCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) SetPowerMachineState(sttIDLE); //move to idle state PowerIdleSetIdle(); + if (SafeRemoveControlCallback(IdleControlId, PowerIdleCallBackFunction )==OK) + IdleControlId = 0xFF; + } } return OK; @@ -121,6 +124,10 @@ void PowerIdleOutOfIdleState(void) LOG_ERROR (1, "Turn Heaters active failed"); return ; } + if (IdleControlId == 0xFF) + IdleControlId = AddControlCallback( PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + if (IdleControlId == 0xFF) + Report("AddControlCallback failed",__FILE__,__LINE__,(int)IdleControlId,RpWarning,(int)0,0); } } -- cgit v1.3.1 From 1a4e2e8a731c7d4c6150de73b36b7c40d6422cd7 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 24 Jul 2019 14:03:35 +0300 Subject: Version 1.4.2.5 firmware upgrade works, improved thread load. (works????) --- .../Embedded/Common/SWUpdate/FileSystem.c | 2 +- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 5 +--- .../Embedded/Common/SWUpdate/FirmwareUpgrade.h | 1 + .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c | 3 +++ .../Embedded/Drivers/Motors/MotorActions.c | 2 +- .../Embedded/Modules/Control/MillisecTask.c | 7 ++--- .../Embedded/Modules/Heaters/Heaters_init.c | 9 +++---- .../Embedded/Modules/Thread/ThreadLoad.c | 30 +++++++++++----------- 9 files changed, 29 insertions(+), 32 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 05b118c90..1e02283e0 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -53,7 +53,7 @@ FIL *UploadFileHandle = 0; //the system supports a single active file FIL *DownloadFileHandle = 0; //the system supports a single active file char FileHandleChar[5]; char ErrorMsg[100]; -#define MAX_CHUNK_LENGTH 4000 +#define MAX_CHUNK_LENGTH 5500 int32_t FileLength = 0; int32_t FileReceivedLength = 0; int32_t FileSentLength = 0; diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index dabd5ff44..139b452dc 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -71,6 +71,7 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (Reboot == true) { + LOG_ERROR(255,"Update successful, Rebooting in 5 seconds"); Task_sleep (120000000*5); Power_Reset(); } @@ -186,10 +187,6 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) activate_version_request__free_unpacked(request,NULL); SendChars(container_buffer, container_size); - if (Reboot == true) - { - Power_Reset(); - } return OK; } diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h index 1d11a84b6..2b0a9bff9 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.h @@ -9,6 +9,7 @@ #define COMMON_SWUPDATE_FIRMWAREUPGRADE_H_ extern int CurrentFileSize; +extern int CurrentRunningFile; uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer); uint32_t ValidateVersionRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 9c02e609e..5b0944ab9 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,5}; +TangoVersion_t _gTangoVersion = {1,4,2,6}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c index 931044f82..11ba12c32 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c @@ -96,6 +96,7 @@ FRESULT FPGA_Programming_Up(FPGA_ID FPGA_Id, char * FullPath, bool IncludeReboot Report(FullPath,__FILE__,__LINE__,CurrentFileSize,RpWarning,0,0); fresult = main_vme(); + CurrentRunningFile++; } @@ -158,6 +159,8 @@ void FPGALoadTask(UArg arg0, UArg arg1) case OneFPGALoad: //ControlStop(); //MillisecStop(); + Report(FPGALoadMessage.FullPath,__FILE__,__LINE__,CurrentRunningFile,RpWarning,0,0); + FPGA_Programming_Up(FPGALoadMessage.FPGA_Id,FPGALoadMessage.FullPath,FPGALoadMessage.IncludeReboot); //ControlStart(); //MillisecStart(); diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 911b31eed..83e041591 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -343,7 +343,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb } MotorSetDirection( MotorId, direction); - MotorSetSpeed (MotorId, 5); + MotorSetSpeed (MotorId, 15); MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, eTenMillisecond,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); MotorControlCallback[MotorId] = MotorMoveToDrierPositionCallBackFunction; return MotorControlId[MotorId]; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index c1fcd4030..e3955793d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -426,10 +426,8 @@ uint32_t MillisecLoop(uint32_t tick) { #ifdef Use_Head_Card HeadADCPT100_SendReadDataCommand(Sensor_i); - #else - TemperatureSensorReadFromFPGA_Res(Sensor_i); //got the data from the FPGA #endif - + TemperatureSensorReadFromFPGA_Res(Sensor_i); //got the data from the FPGA PT100Data[Sensor_i].WaitForData = false; PT100Data[Sensor_i].SyncRequired = true; if (PT100Data[Sensor_i].Callback) @@ -440,9 +438,8 @@ uint32_t MillisecLoop(uint32_t tick) { #ifdef Use_Head_Card HeadADCPT100_StartSync(Sensor_i); - #else - TemperatureSensorSync(Sensor_i); #endif + TemperatureSensorSync(Sensor_i); PT100Data[Sensor_i].SyncRequired = false; PT100Activity--; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index faf6022d6..350236708 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -63,11 +63,10 @@ uint32_t Heaters_Init(void) int i; //ROM_TimerDisable(Heater_timerBase, TIMER_A); - #ifdef Use_Head_Card - HeadADCPT100_SensorInitConfig(); - #else - FPGA_SensorInitConfig(); - #endif +#ifdef Use_Head_Card + HeadADCPT100_SensorInitConfig(); +#endif + FPGA_SensorInitConfig(); memset(HeaterControl,0,sizeof(HeaterControl)); for (i = 0;i Date: Sun, 28 Jul 2019 12:31:49 +0300 Subject: for version 1.4.2.7 : syc file system with semaphore (needs testing!). add secondary pump and activation on init and after 8 hours.now config parameters, improved thread load --- .../Embedded/Common/SWUpdate/FileSystem.c | 8 +- .../Embedded/Common/SWUpdate/FileSystem.h | 2 +- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../PMR/Diagnostics/InterfaceIOs.pb-c.c | 30 +++--- .../PMR/Diagnostics/InterfaceIOs.pb-c.h | 1 + .../PMR/Hardware/HardwareMotor.pb-c.c | 34 +++---- .../PMR/Hardware/HardwareMotor.pb-c.h | 18 ++-- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 16 ++++ .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h | 1 + .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 6 +- .../Flash_Memory/FATFS/Control_File_System.c | 3 + .../Embedded/Drivers/Motors/MotorActions.c | 4 +- Software/Embedded_SW/Embedded/Embedded.cfg | 1 + .../Embedded/Modules/Control/MillisecTask.c | 15 ++- .../Modules/Diagnostics/DiagnosticActions.c | 3 + .../Embedded/Modules/Diagnostics/Diagnostics.c | 4 +- .../Embedded/Modules/General/GeneralHardware.c | 2 +- .../Embedded_SW/Embedded/Modules/General/buttons.c | 42 ++++++--- .../Embedded_SW/Embedded/Modules/General/process.c | 2 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 2 +- .../Embedded/Modules/Thread/ThreadLoad.c | 104 +++++++++++++++------ .../Embedded/Modules/Thread/Thread_ex.h | 8 +- .../Embedded/Modules/Thread/Thread_init.c | 2 +- .../StateMachines/Initialization/InitSequence.c | 5 + 24 files changed, 211 insertions(+), 104 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index f4c52f000..5cbc92285 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -644,7 +644,7 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) } return Fresult; } -FRESULT FileWrite(void * buffer, uint16_t size,char *path) +FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout) { FRESULT Fresult = FR_OK; FIL *FileHandle = 0; //the system supports a single active file @@ -657,7 +657,11 @@ FRESULT FileWrite(void * buffer, uint16_t size,char *path) Fresult = FR_DENIED; else { - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); + if (Semaphore_pend(FFS_Sem, timeout) == false) + { + LOG_ERROR (false,"file system busy error"); + return FR_TIMEOUT; + } Fresult = f_open(FileHandle,path,FA_WRITE | FA_OPEN_ALWAYS); if (Fresult == FR_OK) diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h index 605b4a475..0f6fd9d5d 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h @@ -22,7 +22,7 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer); uint32_t FileDownloadRequestFunc(MessageContainer* requestContainer); uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer); -FRESULT FileWrite(void * buffer, uint16_t size,char *path); +FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout); FRESULT FileRead(char *path, uint32_t *Size, void **Buffer); FRESULT FileOpen(char *path, uint32_t *Size, FIL *FileHandle); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 5b0944ab9..2ef74c7b6 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,6}; +TangoVersion_t _gTangoVersion = {1,4,2,7}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c index ec93b525c..3dfdfc2bb 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c @@ -7,7 +7,7 @@ #endif #include "InterfaceIOs.pb-c.h" -static const ProtobufCEnumValue interface_ios__enum_values_by_number[39] = +static const ProtobufCEnumValue interface_ios__enum_values_by_number[40] = { { "ANALOG_MIXCHIP_TEMP", "INTERFACE_IOS__ANALOG_MIXCHIP_TEMP", 0 }, { "GPO_MIXCHIP_SSR4_CTRL", "INTERFACE_IOS__GPO_MIXCHIP_SSR4_CTRL", 19 }, @@ -40,6 +40,7 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[39] = { "Midtank7Cartridge", "INTERFACE_IOS__Midtank7Cartridge", 179 }, { "Midtank8Cartridge", "INTERFACE_IOS__Midtank8Cartridge", 180 }, { "GPO_LED4", "INTERFACE_IOS__GPO_LED4", 274 }, + { "GPO_TFEED_BREAK_1", "INTERFACE_IOS__GPO_TFEED_BREAK_1", 296 }, { "GPO_SPARE1_1", "INTERFACE_IOS__GPO_SPARE1_1", 318 }, { "GPO_SPARE1_2", "INTERFACE_IOS__GPO_SPARE1_2", 319 }, { "GPI_WCONTAINER_FULL", "INTERFACE_IOS__GPI_WCONTAINER_FULL", 341 }, @@ -50,15 +51,15 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[39] = { "VALVE_WASTE_TANK", "INTERFACE_IOS__VALVE_WASTE_TANK", 346 }, }; static const ProtobufCIntRange interface_ios__value_ranges[] = { -{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{274, 30},{318, 31},{341, 33},{0, 39} +{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{274, 30},{296, 31},{318, 32},{341, 34},{0, 40} }; -static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[39] = +static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[40] = { { "ANALOG_MIXCHIP_TEMP", 0 }, - { "GPI_WCONTAINER_FULL", 33 }, - { "GPI_WCONTAINER_WARN", 34 }, - { "GPO_BLOWER_PWM", 35 }, - { "GPO_CHILLER_SSR9_CTRL", 36 }, + { "GPI_WCONTAINER_FULL", 34 }, + { "GPI_WCONTAINER_WARN", 35 }, + { "GPO_BLOWER_PWM", 36 }, + { "GPO_CHILLER_SSR9_CTRL", 37 }, { "GPO_DILUTORPUMP_SSR10_CTRL", 12 }, { "GPO_DRYER_SSR1_CTRL", 6 }, { "GPO_DRYER_SSR2_CTRL", 7 }, @@ -70,12 +71,13 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[39] = { "GPO_EXTWINDER_SSR11_CTRL", 11 }, { "GPO_LED4", 30 }, { "GPO_MIXCHIP_SSR4_CTRL", 1 }, - { "GPO_SPARE1_1", 31 }, - { "GPO_SPARE1_2", 32 }, + { "GPO_SPARE1_1", 32 }, + { "GPO_SPARE1_2", 33 }, { "GPO_SPARE_SSR12_CTRL", 9 }, { "GPO_SPARE_SSR13_CTRL", 10 }, + { "GPO_TFEED_BREAK_1", 31 }, { "GPO_WASTECH_PUMP2", 13 }, - { "GPO_WHS_WTANKPUMP2", 37 }, + { "GPO_WHS_WTANKPUMP2", 38 }, { "Midtank1Air", 14 }, { "Midtank1Cartridge", 22 }, { "Midtank2Air", 15 }, @@ -92,7 +94,7 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[39] = { "Midtank7Cartridge", 28 }, { "Midtank8Air", 21 }, { "Midtank8Cartridge", 29 }, - { "VALVE_WASTE_TANK", 38 }, + { "VALVE_WASTE_TANK", 39 }, }; const ProtobufCEnumDescriptor interface_ios__descriptor = { @@ -101,11 +103,11 @@ const ProtobufCEnumDescriptor interface_ios__descriptor = "InterfaceIOs", "InterfaceIOs", "", - 39, + 40, interface_ios__enum_values_by_number, - 39, + 40, interface_ios__enum_values_by_name, - 9, + 10, interface_ios__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h index 341997ea0..1baf3dbc6 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h @@ -51,6 +51,7 @@ typedef enum _InterfaceIOs { INTERFACE_IOS__Midtank7Cartridge = 179, INTERFACE_IOS__Midtank8Cartridge = 180, INTERFACE_IOS__GPO_LED4 = 274, + INTERFACE_IOS__GPO_TFEED_BREAK_1 = 296, INTERFACE_IOS__GPO_SPARE1_1 = 318, INTERFACE_IOS__GPO_SPARE1_2 = 319, INTERFACE_IOS__GPI_WCONTAINER_FULL = 341, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c index bfda97424..fb4967ab5 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c @@ -358,7 +358,7 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = "GateCfg1", 26, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_gatecfg1), offsetof(HardwareMotor, gatecfg1), NULL, @@ -370,7 +370,7 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = "GateCfg2", 27, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_gatecfg2), offsetof(HardwareMotor, gatecfg2), NULL, @@ -379,10 +379,10 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "TvalHold", + "TValHold", 28, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tvalhold), offsetof(HardwareMotor, tvalhold), NULL, @@ -391,10 +391,10 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "TvalRun", + "TValRun", 29, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tvalrun), offsetof(HardwareMotor, tvalrun), NULL, @@ -403,10 +403,10 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "TvalAcc", + "TValAcc", 30, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tvalacc), offsetof(HardwareMotor, tvalacc), NULL, @@ -415,10 +415,10 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "TvalDec", + "TValDec", 31, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tvaldec), offsetof(HardwareMotor, tvaldec), NULL, @@ -430,7 +430,7 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = "TFast", 32, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tfast), offsetof(HardwareMotor, tfast), NULL, @@ -442,7 +442,7 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = "TOnMin", 33, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_tonmin), offsetof(HardwareMotor, tonmin), NULL, @@ -454,7 +454,7 @@ static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[34] = "TOffMin", 34, PROTOBUF_C_LABEL_OPTIONAL, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, offsetof(HardwareMotor, has_toffmin), offsetof(HardwareMotor, toffmin), NULL, @@ -493,11 +493,11 @@ static const unsigned hardware_motor__field_indices_by_name[] = { 31, /* field[31] = TFast */ 33, /* field[33] = TOffMin */ 32, /* field[32] = TOnMin */ + 29, /* field[29] = TValAcc */ + 30, /* field[30] = TValDec */ + 27, /* field[27] = TValHold */ + 28, /* field[28] = TValRun */ 18, /* field[18] = ThermalCompensationFactor */ - 29, /* field[29] = TvalAcc */ - 30, /* field[30] = TvalDec */ - 27, /* field[27] = TvalHold */ - 28, /* field[28] = TvalRun */ }; static const ProtobufCIntRange hardware_motor__number_ranges[1 + 1] = { diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h index 789e1e139..2dfc0b200 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h @@ -78,23 +78,23 @@ struct _HardwareMotor protobuf_c_boolean has_fsspd; int32_t fsspd; protobuf_c_boolean has_gatecfg1; - uint32_t gatecfg1; + int32_t gatecfg1; protobuf_c_boolean has_gatecfg2; - uint32_t gatecfg2; + int32_t gatecfg2; protobuf_c_boolean has_tvalhold; - uint32_t tvalhold; + int32_t tvalhold; protobuf_c_boolean has_tvalrun; - uint32_t tvalrun; + int32_t tvalrun; protobuf_c_boolean has_tvalacc; - uint32_t tvalacc; + int32_t tvalacc; protobuf_c_boolean has_tvaldec; - uint32_t tvaldec; + int32_t tvaldec; protobuf_c_boolean has_tfast; - uint32_t tfast; + int32_t tfast; protobuf_c_boolean has_tonmin; - uint32_t tonmin; + int32_t tonmin; protobuf_c_boolean has_toffmin; - uint32_t toffmin; + int32_t toffmin; }; #define HARDWARE_MOTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&hardware_motor__descriptor) \ diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index a8bdaf95c..dd700563b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -730,7 +730,23 @@ void Pumps_Control(PUMPS_ENUM Pump_Id, bool Direction) //1 - OPEN, 0 - CLOSE ?? F1_gpo_01 = F1_GPO_Reg.ushort; } +uint32_t SecondaryPumpControlId; +uint32_t SecondaryPumpCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) +{ + Pumps_Control(WASTECH_PUMP2, CLOSE); + if (SafeRemoveControlCallback(SecondaryPumpControlId, SecondaryPumpCallBackFunction )==OK) + SecondaryPumpControlId = 0xFF; + else + Report("Remove control callback failed",__FILE__,__LINE__,(int)SecondaryPumpControlId,RpWarning,(int)SecondaryPumpCallBackFunction,0); + +} + +void PumpActivation(uint32_t seconds) +{ + Pumps_Control(WASTECH_PUMP2, OPEN); + SecondaryPumpControlId = AddControlCallback( SecondaryPumpCallBackFunction, seconds*1000/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 ); +} /* uint8_t Buttons_LEDS(BUTTON Button, OPERATION_MODE LED_Mode) { diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h index 9767837f1..420a82b47 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h @@ -237,6 +237,7 @@ typedef enum void Pumps_Control(PUMPS_ENUM Pump_Id, bool Direction); +void PumpActivation(uint32_t seconds); uint32_t Control_Dryer_Fan(bool StartStop, uint8_t PWM_Command_Precent); bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID); bool Emergency_Push_Button_Report(); diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 07625d314..e130f4831 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -1167,7 +1167,8 @@ void FPGA_SetMotKvalRun(TimerMotors_t _motorId) Fpga_Spi[_motorId].TX_MOSI = temp; Fpga_Spi[_motorId].AMT_OF_Words = 4; - FPGA_SPI_Transnit(_motorId); + MillisecWriteToMotor(_motorId, temp, 4, NULL); + //FPGA_SPI_Transnit(_motorId); } void FPGA_SetMotKvalAcc(TimerMotors_t _motorId) @@ -1192,7 +1193,8 @@ void FPGA_SetMotKvalAcc(TimerMotors_t _motorId) Fpga_Spi[_motorId].TX_MOSI = temp; Fpga_Spi[_motorId].AMT_OF_Words = 4; - FPGA_SPI_Transnit(_motorId); + MillisecWriteToMotor(_motorId, temp, 4, NULL); +// FPGA_SPI_Transnit(_motorId); } void FPGA_SetMotKvalDec(TimerMotors_t _motorId) diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c index c58be6664..94f341b7d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c +++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c @@ -91,6 +91,7 @@ static FATFS g_sFatFs; //tFResultString; //static int response ; +extern Semaphore_Handle FFS_Sem; char FlashReadstring [35]; char FlashReadstring1 [35]; @@ -128,6 +129,8 @@ FRESULT Init_Flash_File_System(bool Need_mkfs) if(Need_mkfs == true) iFResult = f_mkfs( 0, 0, 512 ); //Create File System on the Drive + Semaphore_post(FFS_Sem); + return iFResult; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 83e041591..e2b0ed701 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -201,7 +201,7 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / if (CallbackCalls%20 == 0) { // REPORT_MSG(MotorPosition,"MotorVerifiedCallBackFunction"); - Report("Move_To_Stopper_Callback",__FILE__,__LINE__,MotorPosition,RpMessage,StoredMotorPosition[MotorId],0); + //Report("Move_To_Stopper_Callback",__FILE__,__LINE__,MotorPosition,RpMessage,StoredMotorPosition[MotorId],0); //CallbackCalls = 0; } @@ -285,7 +285,7 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea //CallbackCalls = 0; } - if (DrierZeroPosition == ReadValue) //thread running identified + //if (DrierZeroPosition == ReadValue) //thread running identified { //stop this control loop SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] ); diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 8dc53256b..9aa9b2470 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -1,5 +1,6 @@ var Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi'); var Clock = xdc.useModule('ti.sysbios.knl.Clock'); +var Seconds = xdc.useModule('ti.sysbios.hal.Seconds'); var BIOS = xdc.useModule('ti.sysbios.BIOS'); var SysMin = xdc.useModule('xdc.runtime.SysMin'); var System = xdc.useModule('xdc.runtime.System'); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index e3955793d..063d7c823 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -492,6 +492,8 @@ void setRapidPressureRead(bool value) { RapidPressureRead = value; } + +uint16_t PumpCounter = 0; uint32_t MillisecLowLoop(uint32_t tick) { uint8_t Motor_i,Disp_i,Heater_i,temp; @@ -501,13 +503,14 @@ uint32_t MillisecLowLoop(uint32_t tick) //call all modules Millisec functions //test dancers and speed encoders //check all callback units (state machine waiting for completion of a change) - bool Ten_msTick, Hundred_msTick , m90msecTick, Onesecond_Tick,O900Millisecond_Tick,OneMinute_Tick; + bool Ten_msTick, Hundred_msTick , m90msecTick, Onesecond_Tick,O900Millisecond_Tick,OneMinute_Tick,OneHourTick; Ten_msTick = (tick%eTenMillisecond == 0) ?true:false; Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false; m90msecTick = (tick%eHundredMillisecond == 90) ?true:false; O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false; Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; + OneHourTick = (tick%eOneHour == 0) ?true:false; //gather Motor data from FPGA //ROM_IntMasterDisable(); @@ -611,6 +614,16 @@ uint32_t MillisecLowLoop(uint32_t tick) MotorGetStatusFromFPGA(Motor_i); }*/ } + if (OneHourTick) + { +#define PUMP_LIMIT 8 + PumpCounter++; + if (PumpCounter>=PUMP_LIMIT) + { + PumpActivation(900); + PumpCounter = 0; + } + } //ROM_IntMasterEnable(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index f8a57362a..4597efa93 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -268,6 +268,9 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) else Lubricant_2Way_Valve(STOP);//use START or STOP, 0 - 100%(); break; + case INTERFACE_IOS__GPO_TFEED_BREAK_1: + Pumps_Control(WASTECH_PUMP2, request->value); + break; default: responseContainer.has_error = true; responseContainer.error = ERROR_CODE__GENERAL_ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index a22bfc815..98e760b32 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -115,7 +115,7 @@ DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; HeaterState **heatersstates; HeaterState HeaterInfo[HEATER_TYPE__MixerHeater+1]; DigitalInterfaceState **digitalinterfacestates; -DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM+9]; +DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM+10]; /*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT+1]; double dispenser2motorfrequency[DIAGNOSTICS_LIMIT+1]; double dispenser3motorfrequency[DIAGNOSTICS_LIMIT+1]; @@ -390,7 +390,7 @@ void Diagnostic100msecCollection(void) dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i); //MidTankpressure[i][0] = IDS_Dispenser_Data[i].totalconsumedinnanolitter; - MidTankpressure[i][0] = IDS_Dispenser_Data[i].consumedinnanolitter; + MidTankpressure[i][0] = 1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000); } #ifndef REDUCED_DIAGNOSTICS for (i=0;idata.data); - FileWrite(requestContainer->data.data, requestContainer->data.len,HwConfigPath); + FileWrite(requestContainer->data.data, requestContainer->data.len,HwConfigPath,BIOS_WAIT_FOREVER); UploadHardwareConfigurationRequest* UploadRequest = upload_hardware_configuration_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index 1c719d778..52f717626 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -538,14 +538,14 @@ uint32_t LoadStatMachine( button *pBtn) { case sttRDY : REPORT_MSG(parameter," ------------ load.state = sttRDY ----------------- "); - switch (pBtn->Action) +/* switch (pBtn->Action) { case (SHORTPB): case (LONGPB): case (REPLONGPB): pBtn->state = sttPRELOAD; - pBtn->color = BLINK; - if (ThreadLoadStateMachine( THREAD_LOAD_INIT)) + pBtn->color = BLINK;*/ + if (ThreadLoadButton( THREAD_LOAD_INIT)) { pBtn->state = sttPRELOAD ; // to do pBtn->color = BLUE; @@ -553,41 +553,54 @@ uint32_t LoadStatMachine( button *pBtn) } else { - pBtn->state = sttDISABLE ; + // pBtn->state = sttDISABLE ; Pannel_Leds(THREAD_LOAD, MODE_OFF);//AVI+ } - break; + /*break; default : break; - } + }*/ break; case sttPRELOAD: REPORT_MSG(parameter," ------------ load.state = sttPRELOAD ----------------- "); - switch (pBtn->Action) + /*switch (pBtn->Action) { case (SHORTPB): case (LONGPB): case (REPLONGPB): pBtn->color = BLUE; - Pannel_Leds(THREAD_LOAD, MODE_ON);//AVI+ - if (ThreadLoadStateMachine( THREAD_LOAD_INITIAL_TENSION)) + Pannel_Leds(THREAD_LOAD, MODE_ON);//AVI+*/ + if (ThreadLoadButton( THREAD_LOAD_INITIAL_TENSION)) { - pBtn->state = sttLOADSUCSESS ; // to do + pBtn->state = sttRDY ; // to do pBtn->color = BLUE; Pannel_Leds(THREAD_LOAD, MODE_ON);//AVI+ } else { - pBtn->state = sttLOADFAIL ; + //pBtn->state = sttLOADFAIL ; pBtn->color = fastBILNK ; // to do } - break; + /*break; default : break; - } + }*/ break; case sttLOADING: REPORT_MSG(parameter," ------------ load.state = sttLOADING ----------------- "); + pBtn->color = fastBILNK; + Pannel_Leds(THREAD_LOAD, MODE_ON);//AVI+ + if (ThreadLoadButton( THREAD_LOAD_END)) + { + pBtn->state = sttRDY ; // to do + pBtn->color = BLUE; + Pannel_Leds(THREAD_LOAD, MODE_ON);//AVI+ + } + else + { + //pBtn->state = sttLOADFAIL ; + pBtn->color = fastBILNK ; // to do + } break; // case sttLOADSUCSESS ????? // break; @@ -596,7 +609,8 @@ uint32_t LoadStatMachine( button *pBtn) default: //sttDISABLE REPORT_MSG(parameter," ------------ load.state = default ----------------- "); - pBtn->color = colorOFF; + pBtn->state = sttRDY ; // to do + pBtn->color = BREATHING; Pannel_Leds(THREAD_LOAD, MODE_OFF);//AVI+ break; } diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index b968381c6..2c8788bdc 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -191,7 +191,7 @@ void ProcessRequestFunc(MessageContainer* requestContainer) ProcessParameters* ProcessParams = request->processparameters; if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters { - FileWrite(requestContainer->data.data, requestContainer->data.len,ProcessParamsConfigPath); + FileWrite(requestContainer->data.data, requestContainer->data.len,ProcessParamsConfigPath,BIOS_WAIT_FOREVER); Bytes = sizeof(ProcessParameters); EraseFlashSection(PROCESS_PARAMETERS_MAP_IN_FLASH,Bytes+4); ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 6d7f0df96..88032f756 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -298,7 +298,7 @@ uint32_t IDS_Dispenser_Store_Data (void) ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH, 4,&response_size); ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, IDS_Dispenser_Data); - Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath); + Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT); DispenserDataUpdated = false; REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); return Status; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 837221274..366f4b163 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -45,18 +45,24 @@ 5 THREAD_LOAD_LIFT_DANCERS, 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE 7 THREAD_LOAD_INITIAL_TENSION, //CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND - 8 THREAD_LOAD_CLOSE_ROCKERS, 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD 10 THREAD_LOAD_CLOSE_LIDS, - 11 THREAD_LOAD_RESUME_HEATING, - 12 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION - 13 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 + 12 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER + 8 THREAD_LOAD_CLOSE_ROCKERS, + 11 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION + 13 THREAD_LOAD_RESUME_HEATING, 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING 15 THREAD_LOAD_END }THREAD_LOAD_STAGES_ENUM;*/ THREAD_LOAD_STAGES_ENUM LoadStages = THREAD_LOAD_INIT; ProcessParameters ProcessParametersClear,ProcessParametersRecover; + + int32_t keepmicrostep; + int32_t keepkvalrun; + uint8_t CallbackCounter = 0; + uint8_t TimeoutsCounter = 0; + uint8_t NumberOfDrierLoaderCycles = 0; uint32_t status = OK; uint32_t ControlId = 0xFF,PullerControlId = 0xFF,WinderControlId = 0xFF; @@ -163,7 +169,7 @@ } else*/ { - Report("Thread_Load_Set_Load_Arm_To_Start_Position_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + Report("Thread_Load_Set_Load_Arm_To_Start_Position_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); //storeLoadArmParameters(); SetMotHome(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM); //set this point as the spool home LoadStages++; @@ -173,6 +179,7 @@ } uint32_t Thread_Load_Set_Load_Arm_To_Stopper_Callback(uint32_t deviceID, uint32_t BusyFlag) { + if(PullerControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[POOLER_MOTOR],Hard_Hiz); @@ -192,7 +199,8 @@ MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,Hard_Hiz); // Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); - Report("Thread_Load_Set_Load_Arm_To_Stopper_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + CallbackCounter = 0; + Report("Thread_Load_Set_Load_Arm_To_Stopper_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); NumberOfDrierLoaderCycles=0; //storeLoadArmParameters(); LoadStages++; @@ -224,13 +232,11 @@ //Use Notation How Many Rotations In The Drier, Or Check Against Stopper. Move Slowly return OK; } - uint8_t CallbackCounter = 0; - uint8_t TimeoutsCounter = 0; uint32_t Thread_Load_HomingCallback(uint32_t MotorId, uint32_t ReadValue) { - Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); - REPORT_MSG(MotorId, "Thread_Load_HomingCallback Motor Id"); + Report("Thread_Load_HomingCallback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); +// REPORT_MSG(MotorId, "Thread_Load_HomingCallback Motor Id"); if (CallbackCounter) { CallbackCounter--; @@ -249,12 +255,12 @@ else { LoadStages++; - if (LoadStages == THREAD_LOAD_LIFT_ROCKERS) + if (LoadStages == THREAD_LOAD_CLOSE_ROCKERS) { - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep); - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].microstep); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].microstep); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepmicrostep); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepmicrostep); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepkvalrun); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepkvalrun); } if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this stage we should wait for user call { @@ -303,16 +309,18 @@ uint32_t Thread_Load_Lift_Rockers(void) //Machine Is Ready. Send Message, Start Timer To Close Lids, Wait For Operator Response { + keepmicrostep = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep; + keepkvalrun = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; REPORT_MSG(LoadStages, "Thread Load State Machine step"); - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 1); - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 35); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 35); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 2); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 2); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); Task_sleep(10); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 50, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,25000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 400, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,20000); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 50, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,25000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 400, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,20000); return OK; } @@ -334,9 +342,9 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,12000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,20000); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,12000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,20000); return OK; } @@ -388,7 +396,7 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); CallbackCounter++; - MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 200, FEEDER_DANCER ,true, Thread_Load_HomingCallback,10000); + MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_HomingCallback,2000); return OK; } @@ -459,6 +467,7 @@ MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4); ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); + Report("AddControlCallback feeder",__FILE__,__LINE__,ControlId,RpMessage,IfTypeThread*0x100+FEEDER_MOTOR,0); CallbackCounter++; MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, numberOfSteps, Thread_Load_Dryer_Loading_Callback, 100000); @@ -466,7 +475,7 @@ //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; LoadArmInfo.LoadArmRounds = 0xFF; - FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath); + FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER); return OK; } uint32_t Thread_Load_Jog_ThreadStop(uint32_t index, uint32_t ReadValue) @@ -490,6 +499,24 @@ uint32_t Thread_Load_End(void) { REPORT_MSG(LoadStages,"Loading Ended"); + if(ControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); + RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); + ControlId = 0xFF; + } + if(PullerControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[POOLER_MOTOR],Hard_Hiz); + RemoveControlCallback(PullerControlId, ThreadLoadControlCBFunction ); + PullerControlId = 0xFF; + } + if(WinderControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[WINDER_MOTOR],Hard_Hiz); + RemoveControlCallback(WinderControlId, ThreadLoadControlCBFunction ); + WinderControlId = 0xFF; + } return OK; } uint32_t Thread_Load_Dryer_UnLoading(void) @@ -523,6 +550,7 @@ MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDRIVING].directionthreadwize); PullerControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+POOLER_MOTOR),POOLER_DANCER,POOLER_MOTOR); + Report("AddControlCallback Puller",__FILE__,__LINE__,PullerControlId,RpMessage,IfTypeThread*0x100+POOLER_MOTOR,0); //////////////////////// MotorControlConfig[WINDER_MOTOR].m_params.MAX = 1; MotorControlConfig[WINDER_MOTOR].m_params.MIN = MotorsControl[WINDER_MOTOR].outputproportionalpowerlimit*-1; @@ -544,6 +572,7 @@ MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize); WinderControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+WINDER_MOTOR),WINDER_DANCER,WINDER_MOTOR); + Report("AddControlCallback Winder",__FILE__,__LINE__,WinderControlId,RpMessage,IfTypeThread*0x100+WINDER_MOTOR,0); //////////////////////// MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING].directionthreadwize); @@ -553,13 +582,15 @@ //MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, // numberOfSteps, Thread_Load_Dryer_Loading_Callback, 100000); Report("Thread_Load_Set_Load_Arm_To_Start_Position",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + LoadArmInfo.LoadArmBackLash = 10; + status |= MotorMoveToStopper(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, (1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize), MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000); //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; LoadArmInfo.LoadArmRounds = 0xFF; - FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath); + FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER); return OK; } @@ -613,10 +644,6 @@ //LoadStages++; Thread_Load_Close_Lids(); break; - case THREAD_LOAD_RESUME_HEATING: - //LoadStages++; - Thread_Load_Resume_Heating(); - break; case THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT://JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION //LoadStages++; Thread_Load_Jog_Feeder_To_Middle_Point(); @@ -626,6 +653,10 @@ //LoadStages++; Thread_Load_Dryer_Loading(); break; + case THREAD_LOAD_RESUME_HEATING: + //LoadStages++; + Thread_Load_Resume_Heating(); + break; case THREAD_LOAD_JOG_THREAD: //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING //LoadStages++; Thread_Load_Jog_Thread(); @@ -640,7 +671,18 @@ } return OK; } - +uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue) +{ + Report("ThreadLoadButton",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0); + if (LoadStages > ReadValue) + { + ThreadLoadStateMachine(LoadStages+1); + } + else + { + ThreadLoadStateMachine(ReadValue); + } +} uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { //read value is the dancer angle diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 167616afe..1544af59e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -58,17 +58,17 @@ typedef enum THREAD_LOAD_LIFT_DANCERS, THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND - THREAD_LOAD_CLOSE_ROCKERS, THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD THREAD_LOAD_CLOSE_LIDS, - THREAD_LOAD_RESUME_HEATING, - THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER + THREAD_LOAD_CLOSE_ROCKERS, + THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION + THREAD_LOAD_RESUME_HEATING, THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING THREAD_LOAD_END }THREAD_LOAD_STAGES_ENUM; -uint32_t ThreadLoadStateMachine( THREAD_LOAD_STAGES_ENUM ReadValue); +uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue); bool ThreadLoadingActive(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 500ba9a39..38c0f86f1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -174,7 +174,7 @@ uint32_t StoreDancerConfigMessage() { response_size = hardware_configuration__pack(&DancerConfig, response_buffer); } - Fresult = FileWrite(response_buffer,response_size,DancerConfigPath); + Fresult = FileWrite(response_buffer,response_size,DancerConfigPath,BIOS_WAIT_FOREVER); EraseFlashSection(DANCERS_MAP_IN_FLASH,1024); for (Dancer_i = 0; Dancer_i < MAX_SYSTEM_DANCERS; Dancer_i++) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index bdf8bd15d..3b972cc23 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -81,7 +81,10 @@ uint32_t InitSequenceCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) else { if (MachineState == MACHINE_STATE_HW_CONFIG) + { + Report("HWConfigurationInit failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceCallBackFunction,0); MachineState = MACHINE_STATE_NO_CFG_FILE; + } } return OK; } @@ -284,6 +287,8 @@ uint32_t InitSequenceStartHeating(void) } else MachineState = MACHINE_STATE_MACHINE_READY_TO_DYE; + //activate second pump for 10 minutes + PumpActivation(600); return OK; } uint32_t InitSequenceMachineReadyToDye(void) -- cgit v1.3.1 From 04468fbdfcc1eac1b3e31d36d71a60461b437480 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 28 Jul 2019 18:14:36 +0300 Subject: improve loading, dispensers handling. stubs --- .../Embedded/Modules/IDS/IDS_dispenser.c | 4 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 +-- .../Embedded/Modules/Thread/ThreadLoad.c | 4 +- .../Embedded/Modules/Thread/Thread_ex.h | 4 +- .../stubs/embeddedparametersbuild.cs | 7 ++-- .../stubs/file read from machine.cs | 47 ++++++++++++++++++++++ 6 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 Software/Stubs Collection/stubs/file read from machine.cs (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 88032f756..212570462 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -321,14 +321,14 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) { DispenserDataUpdated = true; IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10); - if (seconds_counter%100 == 0) + if (seconds_counter%6000 == 0) { Report("IDS_Dispenser_Data ",__FILE__,DispenserId,(int)IDS_Dispenser_Data[DispenserId].consumedinnanolitter,RpWarning,(int)IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter,0); } } if (DispenserId == 0) { - if ((seconds_counter++>=600)&&(DispenserDataUpdated == true))//36000)// - one hour) + if ((seconds_counter++>=36000)&&(DispenserDataUpdated == true))//36000)// - one hour) { seconds_counter = 0; if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index edfc095c2..9d708d959 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -605,15 +605,15 @@ c. Go to step 2.a x Segment.BrushStopsCount. updatedSpeed = (tempSpeed*0.95>100)?tempSpeed*0.95:100; MotorSetSpeed(HW_Motor_Id, updatedSpeed); CurrentDispenserSpeed[i] = updatedSpeed; - Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); } else { tempSpeed = CurrentDispenserSpeed[i]; - updatedSpeed = (tempSpeed*1.1>1000)?tempSpeed*1.1:100; + updatedSpeed = (tempSpeed*1.1>1000)?tempSpeed*1.1:1000; MotorSetSpeed(HW_Motor_Id, updatedSpeed); CurrentDispenserSpeed[i] = updatedSpeed; - Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + //Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); } } } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 366f4b163..d3a9b96ef 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -45,12 +45,12 @@ 5 THREAD_LOAD_LIFT_DANCERS, 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE 7 THREAD_LOAD_INITIAL_TENSION, //CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND + 8 THREAD_LOAD_CLOSE_ROCKERS, 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD 10 THREAD_LOAD_CLOSE_LIDS, + 11 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION 12 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER - 8 THREAD_LOAD_CLOSE_ROCKERS, - 11 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION 13 THREAD_LOAD_RESUME_HEATING, 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING 15 THREAD_LOAD_END diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 1544af59e..04ac12a66 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -58,12 +58,12 @@ typedef enum THREAD_LOAD_LIFT_DANCERS, THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND + THREAD_LOAD_CLOSE_ROCKERS, THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD THREAD_LOAD_CLOSE_LIDS, + THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER - THREAD_LOAD_CLOSE_ROCKERS, - THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION THREAD_LOAD_RESUME_HEATING, THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING THREAD_LOAD_END diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild.cs index e9ee79111..790bd6891 100644 --- a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs +++ b/Software/Stubs Collection/stubs/embeddedparametersbuild.cs @@ -113,10 +113,11 @@ byte[] fileBytes = File.ReadAllBytes("C:/temp/EmbParam.cfg"); var config = ConfigurationParameters.Parser.ParseFrom(fileBytes); -int percent = (int)(config.IDSCleaningStopBeforeSegmentTime); - stubManager.Write( percent+"% \n"); - + stubManager.Write( config); +/* +13:46:42.38: Executing script 'embeddedparametersbuild.cs'... +{ "BreakSensorLimit": 10, "DiagnosticCollectionLimit": 1, "OverHeatCountLimit": 3, "UnderHeatCountLimit": 3, "CloseValveTimeout": 255, "OpenValveTimeout": 255, "InitialDispenserPressure": 1.5, "InitialDispenserTimeout": 60000, "InitialDispenserTimeLag": 100, "DispenserBuildPressureSpeed": 800, "DispenserBuildPressureLimit": 0.9, "DispenserBuildPressureTimeout": 80000, "DispenserBuildPressureLag": 50, "ACHeatersLowerOperationLimit": 995, "ACHeatersUpperOperationLimit": 1005, "DCHeatersLowerOperationLimit": 978, "DCHeatersUpperOperationLimit": 1005, "DispenserPresegmentWFCF": 80, "StartHeatingOnInitSequence": true, "GeneralParameters": [ 1, 1, 1, 1, 800, 1000 ], "CurrentAlarmLowLimit": 0.8, "CurrentAlarmHighLimit": 1.07, "IDSSegmentRefillTimeout": 5000, "IDSPreSegmentBuildupTime": 5000, "IDSCleaningSpeed": 50, "IDSCleaningStopBeforeSegmentTime": 3000, "IDSCleaningStartSprayPreSegmentTime": 1000, "IDSLeftCleaningMotorSpeed": 30, "IDSRightCleaningMotorSpeed": 23, "SwitchToIdleTimeinSeconds": 3600, "IdleDrierTemperature": 80, "IdleHeadTemperature": 80, "PowerOffTemperatureLimit": 50, "IDSPreSegmentWFCFTimeBeforeSegment": 1500 } */ } \ No newline at end of file diff --git a/Software/Stubs Collection/stubs/file read from machine.cs b/Software/Stubs Collection/stubs/file read from machine.cs new file mode 100644 index 000000000..0f5f96c0a --- /dev/null +++ b/Software/Stubs Collection/stubs/file read from machine.cs @@ -0,0 +1,47 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + +UploadHardwareConfigurationRequest uploadHardwareConfigurationRequest = new UploadHardwareConfigurationRequest(); + + + + FileDownloadRequest fileDownloadRequest = new FileDownloadRequest(); + fileDownloadRequest.Path = "0://SysInfo//GenHwCfg.cfg"; + FileDownloadResponse response2 = stubManager.Run(fileDownloadRequest); + + long chunk_size = response2.MaxChunkLength; + + FileStream fs = new FileStream("C:\\Temp\\GenHwCfg.cfg",FileMode.Open); + bool done = 0; + while (done = 0) + { + stubManager.Write("Position "+ fs.Position+ " Length "+ fs.Length +"\n\n"); + FileChunkDownloadRequest fileChunkDownloadRequest = new FileChunkDownloadRequest(); + fileChunkDownloadRequest.DownloadID = response2.DownloadID; + var response3 = stubManager.Run(fileChunkDownloadRequest); + byte[] chunk = new byte[response3.buffer.len]; + fs.Write(response3.buffer.data,chunk.Length); + if (response3.buffer.len Date: Tue, 30 Jul 2019 10:20:11 +0300 Subject: Version 1.4.2.8 improved loading, cleaning introduced, time handled --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Common/Utilities/Utils.c | 8 ++++- .../Embedded_SW/Embedded/Common/Utilities/Utils.h | 1 + .../Embedded/Communication/Connection.c | 1 + .../Flash_Memory/FATFS/fatfs_port_mx66l51235f.c | 6 ++-- .../Embedded/Drivers/Motors/MotorActions.c | 30 ++++++++++++---- .../Embedded/Drivers/SSI_Comm/Dancer/Dancer.h | 2 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 7 ++-- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 27 +++++++------- .../Embedded/Modules/Thread/ThreadLoad.c | 41 ++++++++++++++++++---- .../Embedded/StateMachines/Printing/PrintingSTM.c | 1 + .../stubs/file read from machine.cs | 40 ++++++++++++++++----- 12 files changed, 124 insertions(+), 42 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 2ef74c7b6..1d427a7a5 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,7}; +TangoVersion_t _gTangoVersion = {1,4,2,8}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c index e22291963..d1143ada2 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c @@ -12,6 +12,7 @@ //#include #include "driverlib/hibernate.h" #include +#include //***************************************************************************** @@ -138,9 +139,14 @@ void utilsInit(uint32_t ui32SysClock) // Configure the hibernate module counter to RTC counter mode. HibernateCounterMode(HIBERNATE_COUNTER_RTC); +#define STARTTIME 1564403262 + Seconds_set(STARTTIME); } - +void utilsUpdateDateTime(uint32_t StartTime) +{ + Seconds_set(StartTime); +} uint32_t UsersysTickGet (void) { uint32_t tick = 0; diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h index 37eade5c4..b54453e2c 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h +++ b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h @@ -22,6 +22,7 @@ typedef enum void utilsInit(uint32_t ui32SysClock); +void utilsUpdateDateTime(uint32_t StartTime); uint32_t UsersysTickGet (void); bool DanserCheckPosition(uint16_t position , Danser_t danser, bool test); void InitWatchdog(uint32_t clock); diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c index 50f23d26e..cfcfc6658 100644 --- a/Software/Embedded_SW/Embedded/Communication/Connection.c +++ b/Software/Embedded_SW/Embedded/Communication/Connection.c @@ -60,6 +60,7 @@ void ConnectionRequest(MessageContainer* requestContainer) char AssyVersion[30] = {0}; response.deviceinformation = &DevInfo; + utilsUpdateDateTime(1564403262);//(request->seconds); /* extern TangoVersion_t _gTangoVersion; extern char Dat[50]; diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c index 79f232655..0eccc7601 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c +++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c @@ -23,6 +23,7 @@ #include "driverlib/ssi.h" #include "driverlib/gpio.h" #include "inc/hw_memmap.h" +#include //#include //#include @@ -198,8 +199,9 @@ void disk_timerproc (void) DWORD get_fattime (void) { - return miliseconds / 1000; - + //return miliseconds / 1000; + DWORD t = (DWORD)time(NULL); + return t; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index e2b0ed701..52f62ed5a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -27,6 +27,7 @@ #include "drivers/FPGA/FPGA_Comm.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/SSI_Comm/Dancer/Dancer.h" +#include "drivers/Flash_ram/MCU_E2Prom.h" ///////////////////////// #include "driverlib/ssi.h" @@ -223,10 +224,15 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / MotorStop(MotorId,Hard_Hiz ); Task_sleep(5); MotorMove(MotorId,DrierBackLashDirection,DryerBackLash ); - Task_sleep(5); + Task_sleep(100); if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM) MotorStop(MotorId,Hard_Stop ); + Task_sleep(5); + Read_Dryer_ENC_Position(); //trigger the next call + Task_sleep(5); DrierZeroPosition = Read_Dryer_ENC_Position(); //trigger the next call + MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CENTER,DrierZeroPosition); + Report("MotorVerifiedCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,DryerBackLash,0); //call the module callback @@ -284,9 +290,10 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); //CallbackCalls = 0; } - + Read_Dryer_ENC_Position(); //if (DrierZeroPosition == ReadValue) //thread running identified { + Report("MotorMoveToDrierPosition end",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); //stop this control loop SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] ); MotorControlCallback[MotorId] = 0; @@ -321,9 +328,9 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb Task_sleep(5); Read_Dryer_ENC_Position(); Task_sleep(5); - currentposition = Control_Read_Dryer_Position(0,0,0); + currentposition = Control_Read_Dryer_Position(0,0); + MCU_E2PromRead(EEPROM_STORAGE_DRYER_CENTER,&DrierZeroPosition); Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,DrierZeroPosition,RpWarning,currentposition,0); - if (currentposition > DrierZeroPosition) { direction = false; @@ -341,6 +348,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb direction = true; } } + Report("MotorMovetoEncoderPosition direction",__FILE__,__LINE__,direction,RpWarning,15,0); MotorSetDirection( MotorId, direction); MotorSetSpeed (MotorId, 15); @@ -369,9 +377,19 @@ uint32_t MotorMoveCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO LOG_ERROR (IfIndex, "Wrong Interface type"); return 0xFFFFFFFF; } - MotorId = IfIndex&0xFF; + CallbackCalls++; + if (CallbackCalls%5 == 0) + { + Read_Dryer_ENC_Position(); + } + if (CallbackCalls%5 == 1) + { + MotorId = Control_Read_Dryer_Position(0,0); + Report("MotorMoveCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,MotorId,0); + } - if (BusyFlag == NOTBUSY) + MotorId = IfIndex&0xFF; + if (BusyFlag == NOTBUSY) { //stop this control loop SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] ); diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h index 7a843b1c1..2b3b33dff 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h @@ -12,7 +12,7 @@ uint32_t Read_Dancer_Position (HardwareDancerType DancerId); uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2); uint32_t Read_Dryer_ENC_Position (); -uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1, uint32_t Parameter2); +uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1); void Loop_SSI(); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 212570462..186fef2f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -299,8 +299,11 @@ uint32_t IDS_Dispenser_Store_Data (void) ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, IDS_Dispenser_Data); Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT); - DispenserDataUpdated = false; - REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); + if (Status == FR_OK) + { + DispenserDataUpdated = false; + REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); + } return Status; } void IDS_Dispenser_Content_Calculation (char DispenserId) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 9d708d959..ac6df3c42 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -67,9 +67,10 @@ bool DispensersAlarmState[ MAX_SYSTEM_DISPENSERS] = {false,false,false,f int JobBrushStopId = 0; int lInterSegmentLength = 0; int InterSegmentStepsLimit = 0,InterSegmentStepsCount = 0; - uint32_t InterSegmentStartSprayCleaner; - uint32_t InterSegmentStartRocking; - uint32_t InterSegmentCenterRockers; + + uint32_t InterSegmentStartSprayCleaner = 0; + uint32_t InterSegmentStartRocking = 0; + uint32_t InterSegmentCenterRockers = 0; uint32_t LeftRockerSpeed = 20; uint32_t RighttRockerSpeed = 20; uint32_t CleaningDispenserSpeed = 40; @@ -805,20 +806,20 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); } if (EnableCleaning == true) { - if (InterSegmentStartSprayCleaner == InterSegmentStepsCount) + if (( InterSegmentStartSprayCleaner )&&(InterSegmentStartSprayCleaner == InterSegmentStepsCount)) { Report("Start Spray Cleaner",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); - //IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback); + IDS_Cleaning_Spray_Cleaning_Solution (CleaningDispenserSpeed,NULL); } - if (InterSegmentStartRocking == InterSegmentStepsCount) + /*if (InterSegmentStartRocking == InterSegmentStepsCount) { Report("Start cleaning rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); //IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed); - } - if (InterSegmentCenterRockers == InterSegmentStepsCount) + }*/ + if (( InterSegmentCenterRockers)&&(InterSegmentCenterRockers == InterSegmentStepsCount)) { Report("Stop spray and center rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); - //IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); + IDS_Cleaning_Stop_Cleaning_Solution (NULL); //IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); } } @@ -962,12 +963,12 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) return ERROR; } Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0); - if (EnableCleaning == true) + /*if (EnableCleaning == true) { InterSegmentStartSprayCleaner = 500; InterSegmentStartRocking = 1000; InterSegmentCenterRockers = 3000; - } + }*/ InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength; } @@ -1310,12 +1311,12 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) return ERROR; } Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0); - if (EnableCleaning == true) + /*if (EnableCleaning == true) { InterSegmentStartSprayCleaner = 500; InterSegmentStartRocking = 1000; InterSegmentCenterRockers = 3000; - } + }*/ InterSegmentStartWFCFDispensers = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index d3a9b96ef..efb3f99a9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -232,6 +232,16 @@ //Use Notation How Many Rotations In The Drier, Or Check Against Stopper. Move Slowly return OK; } + uint32_t Thread_Load_Jog_Feeder_To_Middle_Point_Callback(uint32_t deviceID, uint32_t BusyFlag) + { + { + Report("Thread_Load_Jog_Feeder_To_Middle_Point_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); + //storeLoadArmParameters(); + LoadStages++; + ThreadLoadStateMachine(LoadStages); + } + return OK; + } uint32_t Thread_Load_HomingCallback(uint32_t MotorId, uint32_t ReadValue) { @@ -396,13 +406,20 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); CallbackCounter++; - MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_HomingCallback,2000); + MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,2000); return OK; } uint32_t Thread_Load_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint32_t ReadValue) { + Report("Thread_Load_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0); MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200); + if(ControlId != 0xFF) + { + MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); + RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); + ControlId = 0xFF; + } if (CallbackCounter) { CallbackCounter--; @@ -418,17 +435,18 @@ else LOG_ERROR(MotorId, "Thread_Load_HomingCallback Callback is already 0"); + return OK; } uint32_t Thread_Load_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue) { Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); - if(ControlId != 0xFF) + /*if(ControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); ControlId = 0xFF; - } - //REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id"); + }*/ + REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id"); MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Dryer_MovetoEncoderPosition_Callback,10000); return OK; } @@ -437,13 +455,14 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); LoadArmInfo.LoadArmRounds = 20; - uint32_t numberOfSteps = 0; + float numberOfSteps = 0; //Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40 SetOriginMotorSpeed(19); // OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000; // CurrentControlledSpeed[FEEDER_MOTOR] = 1000; numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*LoadArmInfo.LoadArmRounds*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius; + //numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*3.3*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius; Report("Thread Load State Machine step.",__FILE__,LoadStages,numberOfSteps,RpMessage,(int)(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius),0); MotorControlConfig[FEEDER_MOTOR].m_params.MAX = 1; MotorControlConfig[FEEDER_MOTOR].m_params.MIN = MotorsControl[FEEDER_MOTOR].outputproportionalpowerlimit*-1; @@ -534,7 +553,7 @@ MotorControlConfig[POOLER_MOTOR].m_params.MIN = MotorsControl[POOLER_MOTOR].outputproportionalpowerlimit*-1; MotorControlConfig[POOLER_MOTOR].m_params.Kd = MotorsControl[POOLER_MOTOR].derivativetime; MotorControlConfig[POOLER_MOTOR].m_params.Kp = MotorsControl[POOLER_MOTOR].proportionalgain; - MotorControlConfig[POOLER_MOTOR].m_params.Ki = MotorsControl[POOLER_MOTOR].integraltime; + MotorControlConfig[POOLER_MOTOR].m_params.Ki = 0;//MotorsControl[POOLER_MOTOR].integraltime; MotorControlConfig[POOLER_MOTOR].m_params.IntegralErrorMultiplier = MotorsControl[POOLER_MOTOR].setpointramprateorsoftstartramp; MotorControlConfig[POOLER_MOTOR].m_params.ProportionalErrorMultiplier = MotorsControl[POOLER_MOTOR].outputonoffhysteresisvalue; MotorControlConfig[POOLER_MOTOR].m_params.epsilon = MotorsControl[POOLER_MOTOR].epsilon; @@ -556,7 +575,7 @@ MotorControlConfig[WINDER_MOTOR].m_params.MIN = MotorsControl[WINDER_MOTOR].outputproportionalpowerlimit*-1; MotorControlConfig[WINDER_MOTOR].m_params.Kd = MotorsControl[WINDER_MOTOR].derivativetime; MotorControlConfig[WINDER_MOTOR].m_params.Kp = MotorsControl[WINDER_MOTOR].proportionalgain; - MotorControlConfig[WINDER_MOTOR].m_params.Ki = MotorsControl[WINDER_MOTOR].integraltime; + MotorControlConfig[WINDER_MOTOR].m_params.Ki = 0;//MotorsControl[WINDER_MOTOR].integraltime; MotorControlConfig[WINDER_MOTOR].m_params.IntegralErrorMultiplier = MotorsControl[WINDER_MOTOR].setpointramprateorsoftstartramp; MotorControlConfig[WINDER_MOTOR].m_params.ProportionalErrorMultiplier = MotorsControl[WINDER_MOTOR].outputonoffhysteresisvalue; MotorControlConfig[WINDER_MOTOR].m_params.epsilon = MotorsControl[WINDER_MOTOR].epsilon; @@ -682,7 +701,10 @@ uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue) { ThreadLoadStateMachine(ReadValue); } + return OK; } +uint32_t LoadCounter = 0; + uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { //read value is the dancer angle @@ -741,6 +763,11 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); } + LoadCounter++; + if ((LoadCounter % 5001) == 0) + { + Report("MotorSpeedUpdated",__FILE__,index,abs(TranslatedReadValue),RpWarning,(int)CurrentControlledSpeed[index],0); + } return OK; } void ThreadLoadRequest(MessageContainer* requestContainer) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 2959a688b..3aa7f8895 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -151,6 +151,7 @@ FRESULT CloseJobFile() SegmentPtr = NULL; } REPORT_MSG(Fresult,"CloseJobFile"); + IDS_Dispenser_Store_Data (); return Fresult; } diff --git a/Software/Stubs Collection/stubs/file read from machine.cs b/Software/Stubs Collection/stubs/file read from machine.cs index 0f5f96c0a..e4c43b905 100644 --- a/Software/Stubs Collection/stubs/file read from machine.cs +++ b/Software/Stubs Collection/stubs/file read from machine.cs @@ -7,7 +7,11 @@ using System.Windows.Forms; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; +using Tango.PMR.Hardware; using Tango.PMR.Stubs; +using Tango.PMR.IO; +using Google.Protobuf; +using System.IO; using Tango.Stubs; public void OnExecute(StubManager stubManager) @@ -15,28 +19,46 @@ public void OnExecute(StubManager stubManager) UploadHardwareConfigurationRequest uploadHardwareConfigurationRequest = new UploadHardwareConfigurationRequest(); - +/* +FileChunkDownloadResponse fileChunkDownloadResponse = new FileChunkDownloadResponse(); + +ByteString byteString = new ByteString(); +byteString.Length = 0; +byteString.IsEmpty = false; +byteString.Item = 0; + +fileChunkDownloadResponse.Buffer = buffer; +fileChunkDownloadResponse.IsCanceled = false; +*/ + FileDownloadRequest fileDownloadRequest = new FileDownloadRequest(); - fileDownloadRequest.Path = "0://SysInfo//GenHwCfg.cfg"; + fileDownloadRequest.FileName = "0://SysInfo//GenHwCfg.cfg"; FileDownloadResponse response2 = stubManager.Run(fileDownloadRequest); long chunk_size = response2.MaxChunkLength; + stubManager.Write( chunk_size+" \r\n"); - FileStream fs = new FileStream("C:\\Temp\\GenHwCfg.cfg",FileMode.Open); - bool done = 0; - while (done = 0) + FileStream fs = new FileStream("C:\\Temp\\GenHwCfg.cfg",FileMode.Create); + bool done = false; + int location = 0; + while (done == false) { stubManager.Write("Position "+ fs.Position+ " Length "+ fs.Length +"\n\n"); FileChunkDownloadRequest fileChunkDownloadRequest = new FileChunkDownloadRequest(); fileChunkDownloadRequest.DownloadID = response2.DownloadID; var response3 = stubManager.Run(fileChunkDownloadRequest); - byte[] chunk = new byte[response3.buffer.len]; - fs.Write(response3.buffer.data,chunk.Length); - if (response3.buffer.len Date: Tue, 30 Jul 2019 15:31:01 +0300 Subject: Version 1.4.2.9 Thread loading ready --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.c | 2 + .../Embedded/Drivers/Motors/MotorActions.c | 39 ++++++++----------- .../Embedded_SW/Embedded/Modules/General/buttons.c | 1 + .../Embedded/Modules/Thread/ThreadLoad.c | 44 ++++++++++++---------- .../Embedded/Modules/Thread/Thread_ex.h | 32 ++++++++-------- .../Embedded/StateMachines/Printing/PrintingSTM.c | 2 +- 7 files changed, 61 insertions(+), 61 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 1d427a7a5..78c7c7d74 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,8}; +TangoVersion_t _gTangoVersion = {1,4,2,9}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c index c262642ff..411f28c15 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c @@ -365,6 +365,7 @@ uint32_t MotorSetMicroStep(TimerMotors_t _motorId, uint32_t microstep) { MotorDriverRequest[_motorId].microstep = microstep; FPGA_SetMotMicroStep(_motorId); + //Report("MotorSetMicroStep",__FILE__,__LINE__,_motorId,RpMessage,microstep,0); return OK; } @@ -380,6 +381,7 @@ uint32_t MotorSetKvalRun(TimerMotors_t _motorId, uint8_t Value) { MotorDriverRequest[_motorId].KvalRun = Value; FPGA_SetMotKvalRun(_motorId); + //Report("MotorSetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,Value,0); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 52f62ed5a..1d0954491 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -274,6 +274,7 @@ uint32_t MotorMoveToStopper (TimerMotors_t MotorId,bool direction, uint32_t Spee uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t ReadValue) //TODO { TimerMotors_t MotorId; + //uint32_t currentposition; if (IfIndex>>8 != IfTypeMotors) { LOG_ERROR (IfIndex, "Wrong Interface type"); @@ -287,12 +288,12 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea if (CallbackCalls%20 == 0) { // REPORT_MSG(MotorPosition,"MotorVerifiedCallBackFunction"); - Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); + Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,MotorId,DrierZeroPosition,RpWarning,ReadValue,0); //CallbackCalls = 0; } Read_Dryer_ENC_Position(); - //if (DrierZeroPosition == ReadValue) //thread running identified - { + if (abs(ReadValue - DrierZeroPosition)<5) + { Report("MotorMoveToDrierPosition end",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0); //stop this control loop SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] ); @@ -331,28 +332,17 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb currentposition = Control_Read_Dryer_Position(0,0); MCU_E2PromRead(EEPROM_STORAGE_DRYER_CENTER,&DrierZeroPosition); Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,DrierZeroPosition,RpWarning,currentposition,0); - if (currentposition > DrierZeroPosition) - { - direction = false; - } - else + if (abs(currentposition - DrierZeroPosition)<5) { - if (currentposition == DrierZeroPosition) - { - if (callback) - callback(MotorId,0); - return OK; - } - else - { - direction = true; - } + if (callback) + callback(MotorId,0); + return OK; } - Report("MotorMovetoEncoderPosition direction",__FILE__,__LINE__,direction,RpWarning,15,0); + //Report("MotorMovetoEncoderPosition direction",__FILE__,__LINE__,direction,RpWarning,15,0); - MotorSetDirection( MotorId, direction); - MotorSetSpeed (MotorId, 15); - MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, eTenMillisecond,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); + //MotorSetDirection( MotorId, direction); + MotorSetSpeed (MotorId, 50); + MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, 2,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 ); MotorControlCallback[MotorId] = MotorMoveToDrierPositionCallBackFunction; return MotorControlId[MotorId]; @@ -378,11 +368,11 @@ uint32_t MotorMoveCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO return 0xFFFFFFFF; } CallbackCalls++; - if (CallbackCalls%5 == 0) + if (CallbackCalls%200 == 0) { Read_Dryer_ENC_Position(); } - if (CallbackCalls%5 == 1) + if (CallbackCalls%200 == 1) { MotorId = Control_Read_Dryer_Position(0,0); Report("MotorMoveCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,MotorId,0); @@ -456,6 +446,7 @@ uint32_t MotorMoveToLimitSwitchCallBackFunction(uint32_t IfIndex, uint32_t Limit MotorControlId[MotorId] = 0xFF; if ((MotorId == HARDWARE_MOTOR_TYPE__MOTO_RDANCER)&&(HoldRightDancer == true)) { + REPORT_MSG(MotorId,"Motor at limit"); HoldRightDancer = false; MotorStop(MotorId,Soft_Stop); //TODO in run time limit switch just reverse direction } diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index 52f717626..724db5480 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -598,6 +598,7 @@ uint32_t LoadStatMachine( button *pBtn) } else { + pBtn->state = sttRDY ; // to do //pBtn->state = sttLOADFAIL ; pBtn->color = fastBILNK ; // to do } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index efb3f99a9..04ff325d4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -99,7 +99,7 @@ FRESULT Fresult = FR_OK; REPORT_MSG(LoadStages, "Thread Load State Machine step"); - LoadArmInfo.LoadArmBackLash = 10; + LoadArmInfo.LoadArmBackLash = 5; LoadArmInfo.LoadArmRounds = 0xFF; Fresult = f_mkdir(SW_INFO_DIR); if ((Fresult == FR_OK)||(Fresult == FR_EXIST)) @@ -234,12 +234,12 @@ } uint32_t Thread_Load_Jog_Feeder_To_Middle_Point_Callback(uint32_t deviceID, uint32_t BusyFlag) { - { - Report("Thread_Load_Jog_Feeder_To_Middle_Point_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); - //storeLoadArmParameters(); - LoadStages++; - ThreadLoadStateMachine(LoadStages); - } + CallbackCounter--; + Report("Thread_Load_Jog_Feeder_To_Middle_Point_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); + //storeLoadArmParameters(); + LoadStages++; + ThreadLoadStateMachine(LoadStages); + return OK; } @@ -322,8 +322,8 @@ keepmicrostep = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep; keepkvalrun = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; REPORT_MSG(LoadStages, "Thread Load State Machine step"); - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 2); - MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 2); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8); + MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8); MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); Task_sleep(10); @@ -412,7 +412,7 @@ uint32_t Thread_Load_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint32_t ReadValue) { - Report("Thread_Load_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0); + Report("Thread_Load_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200); if(ControlId != 0xFF) { @@ -439,14 +439,14 @@ } uint32_t Thread_Load_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue) { - Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + Report("Thread_Load_Dryer_Loading_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); + Report("Thread_Load_Dryer_Loading_Callback details",__FILE__,__LINE__,MotorId,RpMessage,CallbackCounter,0); /*if(ControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); ControlId = 0xFF; }*/ - REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id"); MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Dryer_MovetoEncoderPosition_Callback,10000); return OK; } @@ -454,7 +454,8 @@ uint32_t Thread_Load_Dryer_Loading(void) { REPORT_MSG(LoadStages, "Thread Load State Machine step"); - LoadArmInfo.LoadArmRounds = 20; + LoadArmInfo.LoadArmRounds = (int)dryerbufferlength; + //LoadArmInfo.LoadArmRounds = 5; float numberOfSteps = 0; //Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40 SetOriginMotorSpeed(19); @@ -462,6 +463,7 @@ // CurrentControlledSpeed[FEEDER_MOTOR] = 1000; numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*LoadArmInfo.LoadArmRounds*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius; + numberOfSteps -= 100; //numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*3.3*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius; Report("Thread Load State Machine step.",__FILE__,LoadStages,numberOfSteps,RpMessage,(int)(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius),0); MotorControlConfig[FEEDER_MOTOR].m_params.MAX = 1; @@ -488,13 +490,14 @@ ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); Report("AddControlCallback feeder",__FILE__,__LINE__,ControlId,RpMessage,IfTypeThread*0x100+FEEDER_MOTOR,0); CallbackCounter++; + Report("Thread_Load_Dryer_Loading",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, numberOfSteps, Thread_Load_Dryer_Loading_Callback, 100000); //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; - LoadArmInfo.LoadArmRounds = 0xFF; - FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER); + LoadArmInfo.LoadArmRounds = (int)dryerbufferlength; + //FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER); return OK; } uint32_t Thread_Load_Jog_ThreadStop(uint32_t index, uint32_t ReadValue) @@ -536,6 +539,7 @@ RemoveControlCallback(WinderControlId, ThreadLoadControlCBFunction ); WinderControlId = 0xFF; } + LoadStages = THREAD_LOAD_INIT; return OK; } uint32_t Thread_Load_Dryer_UnLoading(void) @@ -601,14 +605,14 @@ //MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, // numberOfSteps, Thread_Load_Dryer_Loading_Callback, 100000); Report("Thread_Load_Set_Load_Arm_To_Start_Position",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); - LoadArmInfo.LoadArmBackLash = 10; + LoadArmInfo.LoadArmBackLash = 5; status |= MotorMoveToStopper(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, (1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize), MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000); //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; - LoadArmInfo.LoadArmRounds = 0xFF; + LoadArmInfo.LoadArmRounds = (int)dryerbufferlength; FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER); return OK; } @@ -616,6 +620,8 @@ uint32_t ThreadLoadStateMachine( THREAD_LOAD_STAGES_ENUM ReadValue) { REPORT_MSG(ReadValue,"ThreadLoadStateMachine"); + if (LoadStages!=ReadValue) + LoadStages = ReadValue; switch (ReadValue) { case THREAD_LOAD_INIT: @@ -763,11 +769,11 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); } - LoadCounter++; +/* LoadCounter++; if ((LoadCounter % 5001) == 0) { Report("MotorSpeedUpdated",__FILE__,index,abs(TranslatedReadValue),RpWarning,(int)CurrentControlledSpeed[index],0); - } + }*/ return OK; } void ThreadLoadRequest(MessageContainer* requestContainer) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 04ac12a66..fabb823fc 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -50,23 +50,23 @@ uint32_t Winder_End(void); typedef enum { - THREAD_LOAD_INIT, - THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, - THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY - THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position - THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID - THREAD_LOAD_LIFT_DANCERS, - THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE - THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND - THREAD_LOAD_CLOSE_ROCKERS, - THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD - THREAD_LOAD_CLOSE_LIDS, - THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION - THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 + /*01*/ THREAD_LOAD_INIT, + /*02*/ THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, + /*03*/ THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY + /*04*/ THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position + /*05*/ THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID + /*06*/ THREAD_LOAD_LIFT_DANCERS, + /*07*/ THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE + /*08*/ THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND + /*09*/ THREAD_LOAD_CLOSE_ROCKERS, + /*10*/ THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD + /*11*/ THREAD_LOAD_CLOSE_LIDS, + /*12*/ THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION + /*13*/ THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER - THREAD_LOAD_RESUME_HEATING, - THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING - THREAD_LOAD_END + /*14*/ THREAD_LOAD_RESUME_HEATING, + /*15*/ THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING + /*16*/ THREAD_LOAD_END }THREAD_LOAD_STAGES_ENUM; uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue); bool ThreadLoadingActive(void); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 3aa7f8895..019e2346d 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -657,7 +657,7 @@ void PrintSTMMsgHandler(void * msg) JobMessageStruc *Message = msg; PrintMessageStruc *PrtMessage = (PrintMessageStruc *)Message->messageData; - Report("PrintSTMMsgHandler",__FILE__,__LINE__, 1000,RpMessage,Message->messageId,PrtMessage->messageId); + Report("PrintSTMMsgHandler",__FILE__,__LINE__, Message->messageId,RpMessage,PrtMessage->messageId,0); if ((Message->messageId != PrintMessage)&&(Message->messageId != Abort)) { -- cgit v1.3.1 From 18c4c73f8b654dca09e1333d1f6a35e4cbdc9b17 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 1 Aug 2019 13:08:22 +0300 Subject: Version 1.4.3.0 Embedded SW Release note - Version 1.4.3.0 ============================================================= System: File system protection + improvements Keep critical data on MCU EEPROM Procedures: Thread load fix and coordinate the amount of thread in drier to the distance to spool length. Dispensers flow control stage 2a - maintain pressure during presegment Modules: Enclosure temperature alarms Secondary waste pump Dispensers state info Heaters protection improved Diagnostics data - full data, full speed for now Thread - fix length calculation Process: Cleaning ready for integration --- .../Embedded/Common/SWUpdate/FileSystem.c | 2 + .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Common/report/filter.c | 2 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 2 +- .../Embedded_SW/Embedded/Modules/General/process.c | 8 + .../Embedded_SW/Embedded/Modules/General/process.h | 3 + .../Embedded/Modules/Heaters/Heaters_print.c | 51 +++- Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 1 - .../Embedded/Modules/IDS/IDS_dispenser.c | 10 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 257 +++++++++++++++------ .../Embedded/Modules/Thread/ThreadLoad.c | 1 + .../Embedded/Modules/Thread/Thread_Winder.c | 10 +- .../Embedded/Modules/Thread/Thread_print.c | 58 ++--- .../Embedded/Software Release Notes.txt | 11 +- .../Embedded/StateMachines/Printing/JobSTM.c | 4 +- .../Embedded/StateMachines/Printing/PrintingSTM.c | 8 +- 16 files changed, 302 insertions(+), 128 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 5cbc92285..48e29e54c 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -600,7 +600,9 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) Data[i].name = fno[i]->fname; Data[i].has_length = true; Data[i].length = fno[i]->fsize; + Data[i].has_lastmodifieddate = true; Data[i].lastmodifieddate = fno[i]->fdate; + Data[i].has_lastmodifiedtime = true; Data[i].lastmodifiedtime = fno[i]->ftime; if (i==0) usnprintf(&FullPath[i], 50, "%s", request->path); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 78c7c7d74..9efaf59c8 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,2,9}; +TangoVersion_t _gTangoVersion = {1,4,3,0}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/report/filter.c b/Software/Embedded_SW/Embedded/Common/report/filter.c index b922e53bc..febc1ea8c 100644 --- a/Software/Embedded_SW/Embedded/Common/report/filter.c +++ b/Software/Embedded_SW/Embedded/Common/report/filter.c @@ -145,7 +145,7 @@ int ReportFilterPackage(const char *filterName, uint8_t SwitchAddRemove) return -1; /* nothing to remove */ } strcpy(packageFilterTable[filterNumOfCurrentEntries].filterName,filterName); - packageFilterTable[filterNumOfCurrentEntries].filterDontUse = true; + packageFilterTable[filterNumOfCurrentEntries].filterDontUse = false; filterNumOfCurrentEntries++; return (filterNumOfCurrentEntries-1); } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 98e760b32..2ca57e08e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -62,7 +62,7 @@ uint32_t Diagnostics_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue); uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue); uint32_t DispensersCollection(uint32_t IfIndex, uint32_t ReadValue); -#define REDUCED_DIAGNOSTICS +//#define REDUCED_DIAGNOSTICS DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT; #define DIAGNOSTICS_LIMIT 3 diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 2c8788bdc..39e87ed6a 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -37,6 +37,9 @@ double headairflow = 0; double dryerairflow = 0; int32_t tableindex = 0; +double dryerbufferMeters = 0; +double dryerbufferCentimeters = 0; + #define MAX_ALLOWED_TEMPERATURE 280 char ProcessParamsConfigPath[50] = "0://SysInfo//ProcessP.cfg"; @@ -170,6 +173,11 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; + dryerbufferMeters = dryerbufferlength*0.76+0.6; + dryerbufferCentimeters = dryerbufferlength*76+60; + + Report("drier buffer length",__FILE__,(int)dryerbufferlength,(int)dryerbufferMeters*100,RpWarning,(int)dryerbufferCentimeters,0); + mininkuptake = ProcessParams->mininkuptake; feedertension = ProcessParams->feedertension; pullertension = ProcessParams->pullertension; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.h b/Software/Embedded_SW/Embedded/Modules/General/process.h index c67bd49b3..2b02c28c7 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.h +++ b/Software/Embedded_SW/Embedded/Modules/General/process.h @@ -19,6 +19,9 @@ extern double headairflow; extern double dryerairflow; extern int32_t tableindex; +extern double dryerbufferMeters; +extern double dryerbufferCentimeters; + extern ProcessParameters ProcessParametersKeep; extern void ProcessRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index d60d5b840..8e185750f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -87,7 +87,7 @@ uint32_t DisasterControlId = 0xFF; #define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1 #define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2 #define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3 -#define MINIMUM_HEATER_READ 8.5 +#define MINIMUM_HEATER_READ 9.0 #define MAXIMUM_HEATER_READ 283 //old uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_AN_ENCLOSURETEMP3}; @@ -538,6 +538,28 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) //ReportWithPackageFilter(HeatersFilter,"PrepareHeater AC Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0); HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain] = MillisecGetTemperatures(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]);//MillisecGetTemperatures(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary] = MillisecGetTemperatures(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]);// = MillisecGetTemperatures(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); + if((HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain])|| + (HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary])) + { + ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,RpError, 0,0); + ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,RpError, 0,0); + if (ControlIdtoMaxHeaterId [HeaterId] != 0xFF) + { + RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); + ControlIdtoMaxHeaterId [HeaterId] = 0xFF; + } + if (ControlIdtoHeaterId [HeaterId] != 0xFF) + { + RemoveControlCallback(ControlIdtoHeaterId [HeaterId], DCHeaterControlCBFunction); + ControlIdtoHeaterId [HeaterId] = 0xFF; + } + DeActivateHeater(HeaterId); + HeaterCmd[HeaterId].targettemperatue = 0; + AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); + + return ERROR; + } + } //turn all alarms off AlarmHandlingSetAlarm(HeaterUnderEventType[HeaterId], false); @@ -571,6 +593,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) if (SetTemperatue) { Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100% + ReportWithPackageFilter(HeatersFilter,"Control_Dryer_Fan",__FILE__,__LINE__,START,RpError, 75,0); } } /* @@ -583,6 +606,26 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) if (DisasterControlId == 0xFF) DisasterControlId = AddControlCallback( HeatersDisasterControl, eOneSecond,TemplateDataReadCBFunction,0,0, 0); + HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);//MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]); + if((HeaterPreviousRead[HeaterId]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HeaterId])) + { + ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); + if (ControlIdtoMaxHeaterId [HeaterId] != 0xFF) + { + RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); + ControlIdtoMaxHeaterId [HeaterId] = 0xFF; + } + if (ControlIdtoHeaterId [HeaterId] != 0xFF) + { + RemoveControlCallback(ControlIdtoHeaterId [HeaterId], DCHeaterControlCBFunction); + ControlIdtoHeaterId [HeaterId] = 0xFF; + } + DeActivateHeater(HeaterId); + AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); + HeaterCmd[HeaterId].targettemperatue = 0; + + return ERROR; + } if (ControlIdtoHeaterId [HeaterId] == 0xFF) ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, Frequency/*eOneSecond*/,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); //HeaterPIDConfig[HeaterId].m_params.dt *=10; @@ -598,12 +641,6 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]); - HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);//MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]); - if((abs(HeaterPreviousRead[HeaterId]-MINIMUM_HEATER_READ)<1)||(abs(MAXIMUM_HEATER_READ-HeaterPreviousRead[HeaterId])<10)) - { - ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); - return ERROR; - } //ReportWithPackageFilter(HeatersFilter,"PrepareHeater Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0); if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index d0621125f..33033ad69 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -36,7 +36,6 @@ uint32_t IDS_Dispenser_EmptyCBFunction(uint32_t IfIndex, uint32_t ReadValue); int direction; }IDS_Dispenser_Data;*/ -void IDS_Dispenser_Set_Flow_Params (char DispenserId,double NanoLitterPerPulse,char MicroSteps); void IDS_Dispenser_RefillStarted (char DispenserId,char MicroSteps); void IDS_Dispenser_RefillEnded (char DispenserId,char MicroSteps); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 186fef2f9..de7d12024 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -320,6 +320,8 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) //double consumedintimeframe = (double)(CurrentDispenserSpeed[DispenserId]); //pulses only //consumedintimeframe = 10+DispenserId; IDS_Dispenser_Data[DispenserId].consumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10);//100 milliseconds ==> speed/10 + if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter<0) + IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0; if (CurrentDispenserSpeed[DispenserId]>0.1) { DispenserDataUpdated = true; @@ -350,14 +352,6 @@ void DispensersCollectionCall(void) IDS_Dispenser_Content_Calculation(i); } } -void IDS_Dispenser_Set_Flow_Params (char DispenserId,double nanolitterperpulse,char microsteps) -{ - /*assert (DispenserId1000)?tempSpeed*1.1:1000; + updatedSpeed = (tempSpeed*1.1<1000)?tempSpeed*1.1:1000; MotorSetSpeed(HW_Motor_Id, updatedSpeed); CurrentDispenserSpeed[i] = updatedSpeed; //Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); @@ -634,6 +633,8 @@ c. Go to step 2.a x Segment.BrushStopsCount. } return OK; } + //******************************************************************************************************************** + //******************************************************************************************************************** uint32_t IDSPrepareState(void *JobDetails) { @@ -673,10 +674,6 @@ c. Go to step 2.a x Segment.BrushStopsCount. //ValveCommand (Enable,MixerDirection); } - PrepeareSpeed = JobTicket->processparameters->dyeingspeed*JobTicket->processparameters->maxinkuptake*1.30; - //REPORT_MSG((int)JobTicket->processparameters->dyeingspeed, "dyeing speed"); - //REPORT_MSG((int)JobTicket->processparameters->maxinkuptake, "max ink uptake"); - if (HeaterCheckReady() == true) { REPORT_MSG(1,"heaters ready, starting"); @@ -706,13 +703,10 @@ c. Go to step 2.a x Segment.BrushStopsCount. } if (NumOfActiveDispensers) { - PrepeareSpeed/=NumOfActiveDispensers; REPORT_MSG((int)NumOfActiveDispensers, "Num Of Active Dispensers"); for (i = 0; i < MAX_DYE_DISPENSERS; i++) { - //dispenserspeed = PrepeareSpeed/MotorsCfg[DispenserIdToMotorId[i]].microstep; dispenserspeed = DispenserPrepareSpeed; - //IDS_StopHomeDispenser(i); if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers { Report("Prepare Speed",__FILE__,__LINE__,i,RpWarning,(int)dispenserspeed,0); @@ -724,6 +718,138 @@ c. Go to step 2.a x Segment.BrushStopsCount. DispenserPrepareControlId = AddControlCallback( IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 ); setRapidPressureRead(true); + } + //******************************************************************************************************************** + //************************** IDS PRESEGMENT BUILDUP ****************************************************************** + //******************************************************************************************************************** + + JobDescriptionFileBrushStop * FileBrushStop; + char IdsMessage[100]; + + //******************************************************************************************************************** + uint32_t IDS_PreSegmentPrepare_Callback(uint32_t DispenserId, uint32_t ReadValue) + { + bool pressureReady = false; + int i; + int NumofReadyDispensers = 0; + TimerMotors_t HW_Motor_Id; + float updatedSpeed,tempSpeed; + //REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback"); + + DispenserBuildTimeCounter+=PRESSURE_READ_TIME_GAP; + + if (DispenserBuildTimeCounter<(1*eOneSecond)) + { + REPORT_MSG(DispenserBuildTimeCounter,"waiting 1 seconds for pressure changes"); + return OK; + } + if (PreSegmentWCFStarted == true) + { + REPORT_MSG(PreSegmentWCFStarted,"PreSegmentWCFStarted is true, stopping prepare stage"); + //SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); + setRapidPressureRead(false); + return OK; + } + for (i = 0; i < MAX_DYE_DISPENSERS; i++) + { + //IDS_StopHomeDispenser(i); + if (DispenserUsedInSegment[i] == true) //we actually should check for all dispensers + { + HW_Motor_Id = DispenserIdToMotorId[i]; + if (GetDispenserPressure(i) > DispenserPreparePressure) + { + NumofReadyDispensers++; + tempSpeed = CurrentDispenserSpeed[i]; + updatedSpeed = (tempSpeed*0.95>100)?tempSpeed*0.95:100; + MotorSetSpeed(HW_Motor_Id, updatedSpeed); + CurrentDispenserSpeed[i] = updatedSpeed; + //Report("IDS PreSegment reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + } + else + { + tempSpeed = CurrentDispenserSpeed[i]; + updatedSpeed = (tempSpeed*1.1<1000)?tempSpeed*1.1:1000; + MotorSetSpeed(HW_Motor_Id, updatedSpeed); + CurrentDispenserSpeed[i] = updatedSpeed; + //Report("IDS PreSegment accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + } + } + } + + if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0)) + Report("IDS_PreSegmentPrepare_Callback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); + + if (NumofReadyDispensers>=NumOfActiveDispensers) + pressureReady = true; + + if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true)) + { + SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); + setRapidPressureRead(false); + } + return OK; + } + //******************************************************************************************************************** + void IDSPresegmentPrepareStart(void) + { + int i; + int Dispenser_i,n_dispensers,DispenserId; + TimerMotors_t HW_Motor_Id; + double segmentfirst_speed; + JobDispenser **Dispensers; + + for (Dispenser_i = 0; Dispenser_i < MAX_DYE_DISPENSERS; Dispenser_i++) + { + DispenserUsedInSegment[Dispenser_i] = false; + } + if (FileBrushStop) + { + Report("start dispensers pre segment pressure build",__FILE__,__LINE__,FileBrushStop->index,RpWarning,(int)FileBrushStop->n_dispensers,0); + NumOfActiveDispensers = FileBrushStop->n_dispensers; + Dispensers = FileBrushStop->dispensers; + n_dispensers = FileBrushStop->n_dispensers; + if (n_dispensers) + { + for (Dispenser_i = 0; Dispenser_i < n_dispensers; Dispenser_i++) + { + DispenserId = Dispensers[Dispenser_i]->index; + HW_Motor_Id = DispenserIdToMotorId[DispenserId]; + if (MotorsCfg[HW_Motor_Id].hardwaremotortype + != DispenserIdToMotorId[DispenserId]) + continue; + if ((DispenserId == CLEANER_DISPENSER)||(DispenserId == LUBRICANT_DISPENSER)) + { + continue; + } + //(Speed*uStep*PPR)/((2*PI*Dispenser_Radius) + segmentfirst_speed = Dispensers[Dispenser_i]->nanolitterpersecond + / Dispensers[Dispenser_i]->nanoliterperpulse; + if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) + { + DispenserUsedInSegment[Dispenser_i] = true; + MotorSetSpeed(HW_Motor_Id, DispenserPrepareSpeed); + CurrentDispenserSpeed[Dispenser_i] = DispenserPrepareSpeed; + usnprintf(IdsMessage, 80,"WFCF Prepare Dispenser %d speed %d",DispenserId,(int) segmentfirst_speed); + //REPORT_MSG(segmentfirst_speed,IdsMessage); + Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0); + //SendJobProgress(0.0, 0, false, IdsMessage); + } + else + { + MotorStop(HW_Motor_Id, Hard_Hiz); + CurrentDispenserSpeed[Dispenser_i] = 0; + usnprintf(IdsMessage, 80,"WFCF Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed); + Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0); + + } + } + DispenserBuildTimeCounter = 0; + //DispenserPrepareControlId = AddControlCallback( IDS_PreSegmentPrepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 ); + setRapidPressureRead(true); + + } + } + } //******************************************************************************************************************** uint32_t IDS_Valve_PresegmentValveReady(uint32_t deviceID, uint32_t ReadValue) @@ -757,8 +883,6 @@ c. Go to step 2.a x Segment.BrushStopsCount. //******************************************************************************************************************** - JobDescriptionFileBrushStop * FileBrushStop; - char IdsMessage[100]; uint32_t IDSPreSegmentStateCallbackRunner(uint32_t IfIndex, uint32_t ReadValue) { @@ -803,6 +927,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //IDS_Valve_PresegmentReady(1,0); Report("End of Pre-segment Handling",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); SafeRemoveControlCallback(DispenserPreSegmentControlId,IDSPreSegmentStateCallbackRunner); + setRapidPressureRead(false); } if (EnableCleaning == true) { @@ -816,16 +941,22 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); Report("Start cleaning rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); //IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed); }*/ - if (( InterSegmentCenterRockers)&&(InterSegmentCenterRockers == InterSegmentStepsCount)) + if (( InterSegmentCenterRockers)&&(InterSegmentCenterRockers == (lInterSegmentLength-InterSegmentStepsCount))) { Report("Stop spray and center rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); IDS_Cleaning_Stop_Cleaning_Solution (NULL); //IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); } } + if (PreSegmentWCFStarted == false) + { + IDS_PreSegmentPrepare_Callback(0,0); + } if ((InterSegmentStartWFCFDispensers > 0)&&(InterSegmentStartWFCFDispensers == InterSegmentStepsCount)) { Report("start dispensers at rate * WFCF",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); + PreSegmentWCFStarted = true; // stop any presegment prepare stages, if still exist + setRapidPressureRead(false); if (FileBrushStop) { REPORT_MSG(FileBrushStop->index,"WFCFBrushStopRead Index"); @@ -853,16 +984,10 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //MotorSetMicroStep(HW_Motor_Id, Dispensers[Dispenser_i]->dispenserstepdivision); segmentfirst_speed /= Dispensers[Dispenser_i]->dispenserstepdivision; //the dye supply is calculated based on a 1/8 microstep - IDS_Dispenser_Set_Flow_Params( - DispenserId, Dispensers[Dispenser_i]->nanoliterperpulse, - Dispensers[Dispenser_i]->dispenserstepdivision); } else { segmentfirst_speed/=8;//MotorsCfg[HW_Motor_Id].microstep; //the dye supply is calculated based on a 1/8 microstep - IDS_Dispenser_Set_Flow_Params( - DispenserId, Dispensers[Dispenser_i]->nanoliterperpulse, - MotorsCfg[HW_Motor_Id].microstep); } if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) { @@ -970,7 +1095,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) InterSegmentCenterRockers = 3000; }*/ - InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength; + //InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength; } } /*if (SegmentId == 0)//first segment - running the DTS out of the drier @@ -986,7 +1111,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) CurrentDispenserSpeed[Dispenser_i] = 0; } } - lInterSegmentLength = ((dryerbufferlength*100)*1000/dyeingspeed); + lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); @@ -995,7 +1120,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); return ERROR; } - Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)dryerbufferlength,0); + Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0); if (EnableCleaning == true) { InterSegmentStartSprayCleaner = 500; @@ -1058,7 +1183,6 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) } //REPORT_MSG(DispenserId,"IDS_Valve_Presegment start"); - IDS_Dispenser_Set_Flow_Params(DispenserId,0,0); if (Dispensers[Dispenser_i]->dispenserstepdivision != DISPENSER_STEP_DIVISION__Auto) { MotorSetMicroStep(HW_Motor_Id, Dispensers[Dispenser_i]->dispenserstepdivision); @@ -1080,6 +1204,10 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) } } //Task_sleep(5); + PreSegmentWCFStarted = false; + REPORT_MSG(PreSegmentWCFStarted,"START IDSPresegmentPrepareStart"); + + IDSPresegmentPrepareStart(); return OK; } //******************************************************************************************************************** @@ -1115,17 +1243,10 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) //MotorSetMicroStep(HW_Motor_Id, Dispensers[Dispenser_i]->dispenserstepdivision); segmentfirst_speed /= Dispensers[Dispenser_i]->dispenserstepdivision; //the dye supply is calculated based on a 1/8 microstep - IDS_Dispenser_Set_Flow_Params( - DispenserId, Dispensers[Dispenser_i]->nanoliterperpulse, - Dispensers[Dispenser_i]->dispenserstepdivision); } else { segmentfirst_speed/=8;//MotorsCfg[HW_Motor_Id].microstep; //the dye supply is calculated based on a 1/8 microstep - - IDS_Dispenser_Set_Flow_Params( - DispenserId, Dispensers[Dispenser_i]->nanoliterperpulse, - MotorsCfg[HW_Motor_Id].microstep); } if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) { @@ -1293,7 +1414,6 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (DispenserUsedInJob[Dispenser_i]==false)//unconfigured dispenser continue; DispenserDistanceToSpoolReady[Dispenser_i] = false; - IDS_Dispenser_Set_Flow_Params(Dispenser_i,0,0); //MotorStop(HW_Motor_Id,Hard_Hiz); //Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady); @@ -1301,7 +1421,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) //cleaning - lInterSegmentLength = ((dryerbufferlength*100)*1000/dyeingspeed); + lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); @@ -1354,7 +1474,6 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) //MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); //Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_EndValveReady); - IDS_Dispenser_Set_Flow_Params(Dispenser_i,0,0); } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 04ff325d4..5984618d9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -139,6 +139,7 @@ ProcessParametersClear.headzone5temp = 0; ProcessParametersClear.headzone6temp = 0; ProcessParametersClear.dyeingspeed = 40; + ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength; if (HandleProcessParameters(&ProcessParametersClear)!= OK) { LOG_ERROR (LoadStages, "Thread_Load_Init failed"); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 510168ab8..7e1312464 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -321,7 +321,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) { ScrewNumberOfSteps--; WindingConeLocation--; - ReportWithPackageFilter(ThreadFilter,"Head Backing",__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewNumberOfSteps, 0); + // ReportWithPackageFilter(ThreadFilter,"Head Backing",__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewNumberOfSteps, 0); } } else //next time going back @@ -329,7 +329,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) if ((CalculationDirectionChangeCounter/2)%InternalWinderCfg.SpoolBottomBackingRate == 0) { ScrewNumberOfSteps++; - Report("Bottom Backing ",__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewNumberOfSteps, 0); + // Report("Bottom Backing ",__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewNumberOfSteps, 0); } } /* if (WinderMotorSpeedRollOver) @@ -364,11 +364,11 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) ScrewRunningTime = temp;//(SYS_CLK_FREQ*Steps)/ScrewSpeed; //ROM_IntMasterEnable(); //usnprintf(TempScrewStr, 100, "Winder: Horizon,Rotation, PPR, RPP{ %d, %d ,%d, %d} ",(int)screw_horizontal_speed,(int)RotationsPerSecond,(int)InternalWinderCfg.NumberOfRotationPerPassage,(int)MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].pulseperround); - usnprintf(ScrewStr, 100, "Winder: Steps,Speed, Time, WinderSpeed{ %d, %d ,%d, %d} ",(int)ScrewNumberOfSteps,(int)ScrewSpeed,(int)temp,(int)WinderReferenceSpeed); +// usnprintf(ScrewStr, 100, "Winder: Steps,Speed, Time, WinderSpeed{ %d, %d ,%d, %d} ",(int)ScrewNumberOfSteps,(int)ScrewSpeed,(int)temp,(int)WinderReferenceSpeed); // Report(logmsg[index],__FILE__,__LINE__,index,RpWarning,index, Counter[index]); // #warning PID is now only proportional (above) //Report(TempScrewStr,__FILE__,__LINE__,0,RpWarning,0, 0); - Report(ScrewStr,__FILE__,__LINE__,ScrewCurrentDirection,RpWarning,CalculationDirectionChangeCounter, 0); +// Report(ScrewStr,__FILE__,__LINE__,ScrewCurrentDirection,RpWarning,CalculationDirectionChangeCounter, 0); //REPORT_MSG(temp , "new winder speed"); //Report("new winder speed",__FILE__,ScrewNumberOfSteps,temp,RpWarning,ScrewSpeed,0); } @@ -535,7 +535,7 @@ uint32_t ScrewDTSCallback(uint32_t deviceID, uint32_t BusyFlag) } uint32_t WinderDistanceToSpoolState(void ) { - double DTS_Time = ((dryerbufferlength*100)/dyeingspeed)*1000;//distance to spool time in milliseconds + double DTS_Time = (dryerbufferCentimeters/dyeingspeed)*1000;//distance to spool time in milliseconds REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState"); ScrewDTSControlId = AddControlCallback(ScrewDTSCallback, DTS_Time-WinderBackToBaseTime,TemplateDataReadCBFunction,0,0,0); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 528b83c1c..a88ce61a5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -259,32 +259,38 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) return 0xFFFFFFFF; } PoolerCurrentPosition = MotorGetPosition(ThreadMotorIdToMotorId[index]); -// if (CurrentPosition == 0) -// return OK; //unusable data - if (Poolerinitialpos == 0xFFFF) - { + //if (PoolerCurrentPosition != 0) + //{ + if (Poolerinitialpos == 0xFFFF) + { + PoolerPreviousPosition = PoolerCurrentPosition; + Poolerinitialpos = 0; + } + prevprev = PoolerPreviousPosition; + positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); + //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; PoolerPreviousPosition = PoolerCurrentPosition; - Poolerinitialpos = 0; - } - prevprev = PreviousPosition; - positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); - //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; - PoolerPreviousPosition = PoolerCurrentPosition; - length = (double)(positionDiff)*PoolerLengthCalculationMultiplier; - //if (InitialProcess == false) - { - PoolerTotalProcessedLength+= (length/100); - TempPoolerTotalProcessedLength = PoolerTotalProcessedLength; - } - if (length > 1000) - { - usnprintf(Lenstr, 100, "pooler length huge: length %d, diff 0x%x, pos 0x%x prev 0x%x",(int)length*100,(int)positionDiff,PreviousPosition,prevprev); - SendJobProgress(0.0,0,false, Lenstr); - Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); - length = 0; + // total length = (position diff / full cycle) * pulley perimeter + //(positionDiff/pulseperround)*((2*PI*motor_Radius) - } + //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; + length = (double)(positionDiff)*PoolerLengthCalculationMultiplier; + + if (length > 1000) + { + usnprintf(Lenstr, 100, "length huge: length %d, diff 0x%x, pos 0x%x prev 0x%x",(int)length*100,(int)positionDiff,PreviousPosition,prevprev); + SendJobProgress(0.0,0,false, Lenstr); + Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); + length = 0; + + } + + //} + + length = (double)(positionDiff)*PoolerLengthCalculationMultiplier; + PoolerTotalProcessedLength+= (length/100); + TempPoolerTotalProcessedLength = PoolerTotalProcessedLength; #ifndef FEEDER_LENGTH_CALCULATION CurrentProcessedLength+=length; @@ -914,8 +920,8 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId) } /*else if (InitialProcess==true) { - ThreadUpdateProcessLength (dryerbufferlength,(void *)ThreadPreSegmentEnded); - REPORT_MSG (dryerbufferlength," ThreadPreSegmentState DTS length (sample)"); + ThreadUpdateProcessLength (dryerbufferMeters,(void *)ThreadPreSegmentEnded); + REPORT_MSG (dryerbufferCentimeters," ThreadPreSegmentState DTS length (sample)"); SegmentState = false; PreSegmentState = true; DTSState = false; @@ -977,7 +983,7 @@ uint32_t ThreadSegmentState(void *SegmentDetails, int SegmentId) //******************************************************************************************************************** uint32_t ThreadDistanceToSpoolState(void ) { - seglength = dryerbufferlength; + seglength = dryerbufferMeters; REPORT_MSG (seglength,"ThreadDistanceToSpoolState"); //#ifdef FEEDER_LENGTH_CALCULATION ThreadUpdateProcessLength (seglength,(void *)ThreadDistanceToSpoolEnded); diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index 912979467..92534e42b 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,16 +1,21 @@ -Embedded SW Release note - Version 1.4.2.9 +Embedded SW Release note - Version 1.4.3.0 ============================================================= System: - File system protection + File system protection + improvements Keep critical data on MCU EEPROM Procedures: Thread load + fix and coordinate the amount of thread in drier to the distance to spool length. + Dispensers flow control stage 2a - maintain pressure during presegment Modules: Enclosure temperature alarms Secondary waste pump Dispensers state info + Heaters protection improved + Diagnostics data - full data, full speed for now + Thread - fix length calculation Process: - Cleaning + Cleaning ready for integration Embedded SW Release note - Version 1.4.2.2 ============================================================= diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 4288d786b..b01add901 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -635,8 +635,8 @@ void JobRequestFunc(MessageContainer* requestContainer) JobEndReason = JOB_OK; TotalProcessedLength = 0.0; PoolerTotalProcessedLength = 0.0; - job_length = CurrentJob->length + CurrentJob->processparameters->dryerbufferlength; - Report("job length ",__FILE__,job_length,CurrentJob->length,RpWarning,CurrentJob->processparameters->dryerbufferlength, 0); + job_length = CurrentJob->length + dryerbufferMeters; + Report("job length ",__FILE__,job_length,(int)CurrentJob->length,RpWarning,(int)dryerbufferCentimeters, 0); JobAlarmReason = AlarmHandlingPrepareJob(CurrentJob); if (JobAlarmReason ==OK) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 019e2346d..599056a5e 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -713,7 +713,7 @@ void PrintSTMMsgHandler(void * msg) if (RewindJobFile() != FR_OK) { JobEndReason = JOB_OTHER_ALARM; - if (dryerbufferlength == 0) + if (dryerbufferlength <= 0.1) EndState(CurrentJob, "Job Ended"); else DistanceToSpoolState(CurrentJob); @@ -729,7 +729,7 @@ void PrintSTMMsgHandler(void * msg) Report("SegmentResultsOk segmentId",__FILE__,__LINE__, SegmentId,RpMessage,n_segments,0); if (SegmentId >= n_segments) { - if (dryerbufferlength == 0) + if (dryerbufferlength <= 0.1) EndState(CurrentJob, "Job Ended"); else DistanceToSpoolState(CurrentJob); @@ -749,7 +749,7 @@ void PrintSTMMsgHandler(void * msg) else { JobEndReason = JOB_OTHER_ALARM; - if (dryerbufferlength == 0) + if (dryerbufferlength <= 0.1) EndState(CurrentJob, "Job Ended"); else DistanceToSpoolState(CurrentJob); @@ -761,7 +761,7 @@ void PrintSTMMsgHandler(void * msg) if (Segment == NULL) { JobEndReason = JOB_OTHER_ALARM; - if (dryerbufferlength == 0) + if (dryerbufferlength <= 0.1) EndState(CurrentJob, "Job Ended"); else DistanceToSpoolState(CurrentJob); -- cgit v1.3.1 From 7cb16930bdff98a723769a69cf663108cf50d6b0 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 6 Aug 2019 13:55:40 +0300 Subject: some thread loading improvements and IDS WCF/Cleaning fix --- Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c | 5 +++-- Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/MotorActions.c | 2 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c | 4 ++++ Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 12 ++++++++++-- .../Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 18 ++++++++++++------ 6 files changed, 31 insertions(+), 12 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c index 411f28c15..93ac3f6b6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c @@ -365,7 +365,7 @@ uint32_t MotorSetMicroStep(TimerMotors_t _motorId, uint32_t microstep) { MotorDriverRequest[_motorId].microstep = microstep; FPGA_SetMotMicroStep(_motorId); - //Report("MotorSetMicroStep",__FILE__,__LINE__,_motorId,RpMessage,microstep,0); + Report("MotorSetMicroStep",__FILE__,__LINE__,_motorId,RpMessage,microstep,0); return OK; } @@ -374,6 +374,7 @@ uint32_t MotorSetKvalHold(TimerMotors_t _motorId, uint8_t Value) { MotorDriverRequest[_motorId].KvalHold = Value; FPGA_SetMotKvalHold(_motorId); + Report("MotorSetKvalHold",__FILE__,__LINE__,_motorId,RpMessage,Value,0); return OK; } @@ -381,7 +382,7 @@ uint32_t MotorSetKvalRun(TimerMotors_t _motorId, uint8_t Value) { MotorDriverRequest[_motorId].KvalRun = Value; FPGA_SetMotKvalRun(_motorId); - //Report("MotorSetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,Value,0); + Report("MotorSetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,Value,0); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 0c547142c..ee64fb9d8 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -21,7 +21,7 @@ //#define NUM_OF_MOTORS (HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1) // TODO After the integration with mulbery change to: -#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE3_1+1 +#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE2_2+1 #define MINIMAL_MOTOR_SPEED 0.2 //typedef enum diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 1d0954491..79261286e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -446,7 +446,7 @@ uint32_t MotorMoveToLimitSwitchCallBackFunction(uint32_t IfIndex, uint32_t Limit MotorControlId[MotorId] = 0xFF; if ((MotorId == HARDWARE_MOTOR_TYPE__MOTO_RDANCER)&&(HoldRightDancer == true)) { - REPORT_MSG(MotorId,"Motor at limit"); + REPORT_MSG(MotorId,"RDancer Motor at limit"); HoldRightDancer = false; MotorStop(MotorId,Soft_Stop); //TODO in run time limit switch just reverse direction } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c index 02f25cb59..09a3fbda4 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c @@ -27,6 +27,7 @@ uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed) status |= MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD, RightRockerSpeed); status |= MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH].directionthreadwize); status |= MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH, LeftRockerSpeed); + Report("IDS_Cleaning_Move_Rockers", __FILE__, __LINE__, LeftRockerSpeed, RpWarning, RightRockerSpeed, 0); return status; } @@ -35,6 +36,7 @@ uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callbac uint32_t status = OK; status |= MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD].directionthreadwize, SaveRightRockerSpeed, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD], callback,timeout); status |= MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH].directionthreadwize, SaveLeftRockerSpeed, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH], callback,timeout); + Report("IDS_Cleaning_Center_And_Stop_Rockers", __FILE__, __LINE__, timeout, RpWarning, 123456, 0); return status; } @@ -42,6 +44,7 @@ uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr { uint32_t status = OK; status = IDS_Dispenser_Start_Motor_and_Open_Valve(CLEANING_DISPENSER_ID, dispenserSpeed, callback); + Report("IDS_Cleaning_Spray_Cleaning_Solution", __FILE__, __LINE__, CLEANING_DISPENSER_ID, RpWarning, dispenserSpeed, 0); return status; @@ -50,6 +53,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback) { uint32_t status = OK; status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANING_DISPENSER_ID,callback); + Report("IDS_Dispenser_Close_Valve_And_Stop_Motor", __FILE__, __LINE__, CLEANING_DISPENSER_ID, RpWarning, status, 0); return status; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 1983925b8..e3ecd5d55 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -627,6 +627,8 @@ c. Go to step 2.a x Segment.BrushStopsCount. if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true)) { SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); + DispenserPrepareControlId = 0xFF; + Report("IDS_Prepare_Callback SafeRemoveControlCallback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); setRapidPressureRead(false); //DispenserPrepareReady(); PrepareReady(Module_IDS,ModuleDone); @@ -784,7 +786,10 @@ c. Go to step 2.a x Segment.BrushStopsCount. if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true)) { + Report("IDS_PreSegmentPrepare_Callback SafeRemoveControlCallback",__FILE__,DispenserPrepareControlId,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); + DispenserPrepareControlId = 0xFF; + setRapidPressureRead(false); } return OK; @@ -991,6 +996,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); } if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) { + char IdMessage[100]; segmentfirst_speed *= (100+WFCF); segmentfirst_speed /= 100; DispenserSegmentReady[DispenserId] = false; @@ -999,7 +1005,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed; - usnprintf(IdsMessage, 80, + usnprintf(IdMessage, 80, "WFCF Dispenser %d nl/sec %d nl/pulse %d speed %d", DispenserId, (int) Dispensers[Dispenser_i]->nanolitterpersecond, @@ -1250,6 +1256,8 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) } if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) { + char IdMessage[100]; + DispenserSegmentReady[DispenserId] = false; //Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer /*IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId, @@ -1258,7 +1266,7 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) //Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); CurrentDispenserSpeed[DispenserId] = segmentfirst_speed; - usnprintf(IdsMessage, 80, + usnprintf(IdMessage, 80, "Dispenser %d nl/sec %d nl/pulse %d speed %d steps %d/%d", DispenserId, (int) Dispensers[Dispenser_i]->nanolitterpersecond, diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 5984618d9..ca5f77aba 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -59,7 +59,7 @@ ProcessParameters ProcessParametersClear,ProcessParametersRecover; int32_t keepmicrostep; - int32_t keepkvalrun; + int32_t keepkvalrun,keepkvalhold; uint8_t CallbackCounter = 0; uint8_t TimeoutsCounter = 0; @@ -273,6 +273,10 @@ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepkvalrun); MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepkvalrun); } + if (LoadStages == THREAD_LOAD_CLOSE_DANCERS) + { + MotorSetKvalHold(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, keepkvalhold); + } if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this stage we should wait for user call { ThreadLoadStateMachine(LoadStages); @@ -310,10 +314,12 @@ uint32_t Thread_Load_Lift_Dancers(void) { REPORT_MSG(LoadStages, "Thread Load State Machine step"); + keepkvalhold = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].kvalhold; + MotorSetKvalHold(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, 40); CallbackCounter++; MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 15, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RDANCER], Thread_Load_HomingCallback,15000); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,20000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000); return OK; } @@ -329,9 +335,9 @@ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); Task_sleep(10); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 400, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,20000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,35000); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 400, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,20000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,35000); return OK; } @@ -353,9 +359,9 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,20000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,25000); CallbackCounter++; - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 300, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,20000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LLOADING], Thread_Load_HomingCallback,25000); return OK; } -- cgit v1.3.1 From d627576c770ddab1079940c34057a55206f6a835 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 7 Aug 2019 14:31:44 +0300 Subject: Version 1.4.3.2 small fixes --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 25 ++-- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 7 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.c | 12 +- .../Embedded/Drivers/Motors/MotorActions.c | 5 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 127 ++++++++++++--------- .../Embedded/Modules/Diagnostics/Diagnostics.c | 2 +- .../Embedded/Modules/IDS/IDS_Cleaning.c | 2 +- .../Embedded/Modules/Thread/ThreadLoad.c | 4 +- .../StateMachines/Initialization/InitSequence.c | 7 ++ .../StateMachines/Initialization/InitSequence.h | 1 + 11 files changed, 123 insertions(+), 71 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 7c6b4d4ef..8818d51e5 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -44,7 +44,7 @@ bool SwUpgradeActive(void) { if (ActivateVersionControlId != 0xFF) { - Reboot = false; + //Reboot = false; return true; } return false; @@ -59,18 +59,27 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Report(activateString,__FILE__,__LINE__,(int)CurrentRunningFile,RpWarning,CurrentFileSize,0); if (CurrentRunningFiletoken, false, &response, &activate_version_response__pack, &activate_version_response__get_packed_size); + responseContainer.continuous = true; if (Fresult!= OK) { responseContainer.error = FileError_to_ErrorCode[Fresult]; responseContainer.errormessage = "Activate Version Request error"; + responseContainer.continuous = false; } - responseContainer.continuous = false; + responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 9efaf59c8..d368a60e0 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,3,0}; +TangoVersion_t _gTangoVersion = {1,4,3,2}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index f8a256215..4d243408c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -1001,6 +1001,7 @@ void FPGA_SetMotMicroStep(TimerMotors_t _motorId)// CM_VM = MotorDriverResponse[_motorId].DriverMode; temp |= (!x_SYNC_EN | CM_VM | good | x_SYNC_SEL_1)<<16; + Report("FPGA_SetMotMicroStep",__FILE__,__LINE__,_motorId,RpMessage,i,0); MillisecWriteToMotor(_motorId, temp, 4, NULL); } @@ -1138,7 +1139,9 @@ void FPGA_SetMotKvalHold(TimerMotors_t _motorId) Fpga_Spi[_motorId].TX_MOSI = temp; Fpga_Spi[_motorId].AMT_OF_Words = 4; - FPGA_SPI_Transnit(_motorId); + Report("FPGA SetKvalHold",__FILE__,__LINE__,_motorId,RpMessage,MotorDriverResponse[_motorId].DriverMode,0); + + MillisecWriteToMotor(_motorId,temp,4,NULL); } void FPGA_SetMotKvalRun(TimerMotors_t _motorId) @@ -1163,6 +1166,8 @@ void FPGA_SetMotKvalRun(TimerMotors_t _motorId) Fpga_Spi[_motorId].TX_MOSI = temp; Fpga_Spi[_motorId].AMT_OF_Words = 4; + Report("FPGA SetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,temp,0); + MillisecWriteToMotor(_motorId, temp, 4, NULL); //FPGA_SPI_Transnit(_motorId); } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c index 93ac3f6b6..484410c26 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c @@ -365,24 +365,26 @@ uint32_t MotorSetMicroStep(TimerMotors_t _motorId, uint32_t microstep) { MotorDriverRequest[_motorId].microstep = microstep; FPGA_SetMotMicroStep(_motorId); - Report("MotorSetMicroStep",__FILE__,__LINE__,_motorId,RpMessage,microstep,0); + ReportWithPackageFilter(GeneralFilter,"MotorSetMicroStep",__FILE__,__LINE__,_motorId,RpMessage,microstep,0); return OK; } uint32_t MotorSetKvalHold(TimerMotors_t _motorId, uint8_t Value) { - MotorDriverRequest[_motorId].KvalHold = Value; + MotorsCfg[_motorId].kvalhold = Value; + MotorsCfg[_motorId].tvalhold = Value; FPGA_SetMotKvalHold(_motorId); - Report("MotorSetKvalHold",__FILE__,__LINE__,_motorId,RpMessage,Value,0); + ReportWithPackageFilter(GeneralFilter,"MotorSetKvalHold",__FILE__,__LINE__,_motorId,RpMessage,Value,0); return OK; } uint32_t MotorSetKvalRun(TimerMotors_t _motorId, uint8_t Value) { - MotorDriverRequest[_motorId].KvalRun = Value; + MotorsCfg[_motorId].kvalrun = Value; + MotorsCfg[_motorId].tvalrun = Value; FPGA_SetMotKvalRun(_motorId); - Report("MotorSetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,Value,0); + ReportWithPackageFilter(GeneralFilter,"MotorSetKvalRun",__FILE__,__LINE__,_motorId,RpMessage,Value,0); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 79261286e..280c3807c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -147,7 +147,7 @@ uint32_t MotorGotoWithCallback (TimerMotors_t MotorId, uint32_t Steps, uint32_t //MotorStop(MotorId,Hard_Hiz ); MotorGoTo(MotorId,Steps ); MotorControlId[MotorId] = AddControlCallback( MotorMoveToLimitSwitchCallBackFunction, eTenMillisecond, FPGA_Read_limit_Switches,(IfTypeMotors*0x100+MotorId), LimitSwitchId, 0 ); - MotorControlCallback[MotorId] = MotorMoveCallBackFunction; + MotorControlCallback[MotorId] = MotorMoveToLimitSwitchCallBackFunction; return MotorControlId[MotorId]; } uint32_t MotorGotoWithBusyCallback (TimerMotors_t MotorId,bool direction, uint32_t Steps, callback_fptr callback,uint32_t timeout) //TODO @@ -435,7 +435,10 @@ uint32_t MotorMoveToLimitSwitchCallBackFunction(uint32_t IfIndex, uint32_t Limit MotorId = (TimerMotors_t)(IfIndex&0xFF); if (MotorControlId[MotorId] == 0xFF) + { + SafeRemoveControlCallback(MotorControlId[MotorId], MotorMoveToLimitSwitchCallBackFunction ); return ERROR; + } MotorTimeout[MotorId]+=MotorTimeLag[MotorId]; if ((LimitSwitch == LIMIT) ||((MotorTimeout[MotorId]>=MotorTimeLimit[MotorId])&&(MotorTimeLimit[MotorId]>0))) diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index c4fcfaf8e..bae57d876 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -176,14 +176,14 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_7_OVERPRESSURE}, {eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_8_OVERPRESSURE}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_1_EMPTY}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_2_EMPTY}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_3_EMPTY}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_4_EMPTY}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_5_EMPTY}, - // {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_8_EMPTY}, - - /* + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_1_EMPTY}, + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_2_EMPTY}, + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_3_EMPTY}, + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_4_EMPTY}, + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_5_EMPTY}, + {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning,0xFF,2,EVENT_TYPE__MID_TANK_8_EMPTY}, + + {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,x_STATUS_OCD,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__DRYER_MOTOR_OVERCURRENT }, {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_RDRIVING, HARDWARE_MOTOR_TYPE__MOTO_RDRIVING, x_STATUS_OCD,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__FEEDER_MOTOR_OVERCURRENT }, {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_SCREW, HARDWARE_MOTOR_TYPE__MOTO_SCREW, x_STATUS_OCD,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__SCREW_MOTOR_OVERCURRENT }, @@ -236,7 +236,7 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_6, HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_6, x_STATUS_STEP_LOSS_A,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__DISPENSER_6_MOTOR_STALL}, {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_7, HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_7, x_STATUS_STEP_LOSS_A,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__DISPENSER_7_MOTOR_STALL}, {eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8, HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8, x_STATUS_STEP_LOSS_A,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__DISPENSER_8_MOTOR_STALL}, - */ + {eHundredMillisecond,ALARM_SOURCE_TYPE__TemperatureAlarm,MIXER_PT100, HARDWARE_PID_CONTROL_TYPE__MixerHeater ,270,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__MIXER_OVERTEMPERATURE}, {eHundredMillisecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1 ,270,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_1_OVERTEMPERATURE}, {eHundredMillisecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2 ,270,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_2_OVERTEMPERATURE}, @@ -256,7 +256,7 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eHundredMillisecond,ALARM_SOURCE_TYPE__CoversAlarm,RearDoor ,1,false,true,DEBUG_LOG_CATEGORY__Error, 0xFF,5,EVENT_TYPE__REAR_COVER_OPEN }, {eHundredMillisecond,ALARM_SOURCE_TYPE__CoversAlarm,CartridgesDoor,1,false,true,DEBUG_LOG_CATEGORY__Warning,0xFF,5,EVENT_TYPE__CARTRIDGES_COVER_OPEN}, - /* + {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,MIXER_PT100, HARDWARE_PID_CONTROL_TYPE__MixerHeater ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MIXER_UNDERTEMPERATURE_A}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1 ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_A}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2 ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_A}, @@ -264,7 +264,7 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4 ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_A}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5 ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_A}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,HEAD6_PT100, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6 ,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_A}, - */ + {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DRYER_TEMP1, HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature,9,false,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__DRYER_ZONE_1_UNDERTEMPERATURE_A}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,MIXER_PT100, HARDWARE_PID_CONTROL_TYPE__MixerHeater ,9,false,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__MIXER_UNDERTEMPERATURE_B}, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1 ,9,false,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_B}, @@ -275,49 +275,49 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,HEAD6_PT100, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6 ,9,false,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_B }, {eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_ANALOG_DRYER_TEMP1, HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature,9,false,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DRYER_ZONE_1_UNDERTEMPERATURE_B }, - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_OVERCURRENT }, /* 3004 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_OVERCURRENT }, /* 3006 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_OVERCURRENT }, /* 3009 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_MOTOR_OVERCURRENT /*EVENT_TYPE__WINDER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3036 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_MOTOR_OVERCURRENT /*EVENT_TYPE__PULLER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3037 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_MOTOR_OVERCURRENT /*EVENT_TYPE__FEEDER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3038 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_MOTOR_OVERCURRENT /*EVENT_TYPE__DRYER_LID_MOTOR_OVERCURRENT*/ }, /* 4017 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_OVERCURRENT }, /* 5031 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERCURRENT }, /* 5035 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERCURRENT }, /* 5039 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_OVERCURRENT }, /* 3004 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_OVERCURRENT }, /* 3006 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_OVERCURRENT }, /* 3009 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_MOTOR_OVERCURRENT /*EVENT_TYPE__WINDER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3036 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_MOTOR_OVERCURRENT /*EVENT_TYPE__PULLER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3037 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_MOTOR_OVERCURRENT /*EVENT_TYPE__FEEDER_DANCER_MOTOR_OVERCURRENT*/ }, /* 3038 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_MOTOR_OVERCURRENT /*EVENT_TYPE__DRYER_LID_MOTOR_OVERCURRENT*/ }, /* 4017 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_OVERCURRENT }, /* 5031 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERCURRENT }, /* 5035 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_OCD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERCURRENT }, /* 5039 */ // - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_OVERTEMPERATURE }, /* 3011 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_OVERTEMPERATURE }, /* 3013 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_OVERTEMPERATURE }, /* 3016 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3039 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3040 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3041 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_OVERTEMPERATURE }, /* 4018 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_OVERTEMPERATURE }, /* 5032 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERTEMPERATURE }, /* 5036 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERTEMPERATURE }, /* 5040 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_OVERTEMPERATURE }, /* 3011 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_OVERTEMPERATURE }, /* 3013 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_OVERTEMPERATURE }, /* 3016 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3039 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3040 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_OVERTEMPERATURE }, /* 3041 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_OVERTEMPERATURE }, /* 4018 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_OVERTEMPERATURE }, /* 5032 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_OVERTEMPERATURE }, /* 5036 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_TH_SD , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_OVERTEMPERATURE }, /* 5040 */ // - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_STALL }, /* 3018 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_STALL }, /* 3020 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_STALL }, /* 3023 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_STALL }, /* 3042 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_STALL }, /* 3043 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_STALL }, /* 3044 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_STALL }, /* 4019 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_STALL }, /* 5033 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_STALL }, /* 5037 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_STALL }, /* 5041 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_STALL }, /* 3018 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_STALL }, /* 3020 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_STALL }, /* 3023 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_STALL }, /* 3042 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_STALL }, /* 3043 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_STALL }, /* 3044 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_STALL }, /* 4019 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_STALL }, /* 5033 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_STALL }, /* 5037 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD ,x_STATUS_STEP_LOSS_A , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_STALL }, /* 5041 */ // - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_UNDERVOLTAGE }, /* 3025 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_UNDERVOLTAGE }, /* 3027 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_UNDERVOLTAGE }, /* 3030 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3045 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3046 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3047 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_UNDERVOLTAGE }, /* 4020 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_UNDERVOLTAGE }, /* 5034 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE }, /* 5038 */ - // {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE }, /* 5042 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RLOADING , HARDWARE_MOTOR_TYPE__MOTO_RLOADING , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__RIGHT_LOADER_MOTOR_UNDERVOLTAGE }, /* 3025 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LLOADING , HARDWARE_MOTOR_TYPE__MOTO_LLOADING , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LEFT_LOADER_MOTOR_UNDERVOLTAGE }, /* 3027 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__LOADING_ARM_MOTOR_UNDERVOLTAGE }, /* 3030 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER2 , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__WINDER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3045 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , HARDWARE_MOTOR_TYPE__MOTO_LDANCER1 , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__PULLER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3046 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_RDANCER , HARDWARE_MOTOR_TYPE__MOTO_RDANCER , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__FEEDER_DANCER_MOTOR_UNDERVOLTAGE }, /* 3047 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DRYER_LID_MOTOR_UNDERVOLTAGE }, /* 4020 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_LID , HARDWARE_MOTOR_TYPE__MOTO_DH_LID , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_COVER_MOTOR_UNDERVOLTAGE }, /* 5034 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE }, /* 5038 */ + {eOneSecond, ALARM_SOURCE_TYPE__MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE }, /* 5042 */ {eOneSecond, ALARM_SOURCE_TYPE__CurrentAlarm, HEATER_HEAD_CURRENT_ZONE_1 , HEATER_HEAD_CURRENT_ZONE_1 , 125 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE }, /* 5018 */ {eOneSecond, ALARM_SOURCE_TYPE__CurrentAlarm, HEATER_HEAD_CURRENT_ZONE_2 , HEATER_HEAD_CURRENT_ZONE_2 , 187 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE }, /* 5019 */ @@ -458,11 +458,17 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever { case ALARM_SOURCE_TYPE__TemperatureAlarm: //need to discover the heater Id and shut it down - HeaterCommandRequestMessage(AlarmItem[AlarmId].ModuleDeviceId, HEATER_OFF, 0); + if ((Severity == DEBUG_LOG_CATEGORY__Error)||(Severity == DEBUG_LOG_CATEGORY__Critical)) + { + ReportWithPackageFilter(AlarmFilter,"Heating alarm, turning heating off", __FILE__,__LINE__,AlarmId, RpMessage, Severity, 0); + //HeaterCommandRequestMessage(AlarmItem[AlarmId].ModuleDeviceId, HEATER_OFF, 0); + HeatersEnd(); + } break; case ALARM_SOURCE_TYPE__LimitSwitchAlarm: case ALARM_SOURCE_TYPE__HardLimitAlarm: case ALARM_SOURCE_TYPE__PressureAlarm: + ReportWithPackageFilter(AlarmFilter,"Dispenser alarm, stop job and dispenser", __FILE__,AlarmItem[AlarmId].ModuleDeviceId,AlarmId, RpMessage, AlarmItem[AlarmId].AlarmSource, 0); if (Severity == DEBUG_LOG_CATEGORY__Info) { IDS_Dispenser_Alarm_Off(AlarmItem[AlarmId].ModuleDeviceId); @@ -475,7 +481,22 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever case ALARM_SOURCE_TYPE__CurrentAlarm: break; case ALARM_SOURCE_TYPE__MotorAlarm: - MotorStop(AlarmItem[AlarmId].ModuleDeviceId,Hard_Hiz); + if ((Severity == DEBUG_LOG_CATEGORY__Error)||(Severity == DEBUG_LOG_CATEGORY__Critical)) + { + ReportWithPackageFilter(AlarmFilter,"Motor alarm, motor stopped", __FILE__,AlarmItem[AlarmId].ModuleDeviceId,AlarmId, RpMessage, AlarmItem[AlarmId].AlarmSource, 0); + MotorStop(AlarmItem[AlarmId].ModuleDeviceId,Hard_Hiz); + } + if ((AlarmItem[AlarmId].ModuleDeviceId >= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)&&(AlarmItem[AlarmId].ModuleDeviceId <= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8)) //dispenser motor alarm + { + if (Severity == DEBUG_LOG_CATEGORY__Info) + { + IDS_Dispenser_Alarm_Off(AlarmItem[AlarmId].ModuleDeviceId); + } + else + { + IDS_Dispenser_Alarm_On (AlarmItem[AlarmId].ModuleDeviceId); + } + } break; default: break; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 2ca57e08e..5d20791c0 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -81,7 +81,7 @@ int DiagnosticLimit =eOneSecond; //frequency of data collection int DiagnosticLimit =eHundredMillisecond; //frequency of data collection #endif int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection - +#define TEN_MSEC_COLLECTION //DigitalPin DigitalPinArray[1][DIAGNOSTICS_LIMIT+1]; double dancer1angle[DIAGNOSTICS_LIMIT+1]; double dancer2angle[DIAGNOSTICS_LIMIT+1]; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c index 09a3fbda4..2a1a8fa31 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c @@ -53,7 +53,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback) { uint32_t status = OK; status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANING_DISPENSER_ID,callback); - Report("IDS_Dispenser_Close_Valve_And_Stop_Motor", __FILE__, __LINE__, CLEANING_DISPENSER_ID, RpWarning, status, 0); + Report("IDS_Cleaning_Stop_Cleaning_Solution", __FILE__, __LINE__, CLEANING_DISPENSER_ID, RpWarning, status, 0); return status; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index ca5f77aba..7d4b66dfb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -115,6 +115,7 @@ } Report("Thread_Load_Init",__FILE__,__LINE__,LoadArmInfo.LoadArmBackLash,RpMessage,LoadArmInfo.LoadArmRounds,0); + StopInitSequence(); memcpy (&ProcessParametersRecover,&ProcessParametersKeep,sizeof(ProcessParameters)); //NumberOfDrierLoaderCycles = loadLoadArmParameters(); LoadStages++; @@ -462,7 +463,8 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); LoadArmInfo.LoadArmRounds = (int)dryerbufferlength; - //LoadArmInfo.LoadArmRounds = 5; + if (LoadArmInfo.LoadArmRounds <= 2) + LoadArmInfo.LoadArmRounds = 20; float numberOfSteps = 0; //Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40 SetOriginMotorSpeed(19); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 3b972cc23..a9b63ea47 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -51,6 +51,12 @@ void SetMachineState(MACHINE_STATE_STAGES_ENUM NewState) { MachineState = NewState; } +void StopInitSequence(void) +{ + InitStages = INIT_SEQUENCE_END; + InitSequenceStateMachine(InitStages); +} + uint32_t HWControlId,InitSchedulerControlId; uint32_t MidTankControlId; @@ -297,6 +303,7 @@ uint32_t InitSequenceMachineReadyToDye(void) } uint32_t InitSequenceInitEnd(void) { + RemoveControlCallback( InitSchedulerControlId,InitScheduler); return OK; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h index e4df62eb8..105537721 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h @@ -29,6 +29,7 @@ }MACHINE_STATE_STAGES_ENUM; uint32_t Start_InitSequence(void); +void StopInitSequence(void); MACHINE_STATE_STAGES_ENUM GetMachineState(void); void SetMachineState(MACHINE_STATE_STAGES_ENUM); void InitSequenceSetStartHeating(bool StartHeating); -- cgit v1.3.1 From 1859ac4ad53f0f5a55a66b634ddec870e164f580 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 18 Aug 2019 13:58:18 +0300 Subject: Version 1.4.3.85 diagnstics levels set in config params. machine status. --- .../Embedded/Common/SWUpdate/FileSystem.c | 4 +- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Communication/CommunicationTask.c | 2 +- .../Embedded/Drivers/ADC_Sampling/ADC_VOC_Sensor.c | 5 +- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 1 + .../Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c | 3 + .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 3 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 4 +- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 4 +- .../Embedded/Modules/Control/MillisecTask.c | 1 + .../Embedded/Modules/Diagnostics/Diagnostics.c | 104 ++++++++++--------- .../Embedded/Modules/Diagnostics/Diagnostics.h | 10 +- .../Embedded/Modules/General/GeneralHardware.c | 38 +++++-- .../Embedded/Modules/General/MachineStatus.c | 12 ++- .../Embedded/Modules/General/MachineStatus.h | 1 + .../Embedded/Modules/Heaters/Heaters_print.c | 10 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 +- .../Embedded/Modules/Thread/ThreadLoad.c | 3 + .../Embedded/Modules/Thread/Thread_Winder.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 2 +- .../Initialization/PowerOffSequence.c | 5 +- .../Embedded/StateMachines/Printing/JobSTM.c | 110 +++++++++++---------- .../stubs/embeddedparametersbuild.cs | 23 +++-- 23 files changed, 214 insertions(+), 141 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 48e29e54c..4396f6da1 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -547,10 +547,10 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) GetFilesResponse response = GET_FILES_RESPONSE__INIT; - #define MAX_NUM_OF_FILES 10 + #define MAX_NUM_OF_FILES 20 DIR dir; FILINFO* fno[MAX_NUM_OF_FILES]; - char FullPath[MAX_NUM_OF_FILES][100]; + char FullPath[MAX_NUM_OF_FILES][60]; int i,NumOfFiles = 0; FRESULT Fresult = FR_OK; diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index c717bfc8b..5193ac1c5 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,3,8}; +TangoVersion_t _gTangoVersion = {1,4,3,85}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c index 27780a9e3..a970aab5a 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -69,7 +69,7 @@ uint32_t initArray(size_t initialSize) else { SerialBufferUsed[i] = true; - inBuffer[i].buffer = &CommShortRxBuffer[i]; + inBuffer[i].buffer = (char *)&CommShortRxBuffer[i]; inBuffer[i].used = 0; inBuffer[i].size = initialSize; return i; diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_VOC_Sensor.c b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_VOC_Sensor.c index 07956e80d..7eccf5c58 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_VOC_Sensor.c +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_VOC_Sensor.c @@ -33,7 +33,7 @@ void VOCAlarmsInit(void) void CalculateVOCAlarms(void) { - int i,slope1=0,slope2=0,slopeindex=0; + int i,slope1=0,/*slope2=0,*/slopeindex=0; double a; bool alarmstate = false; for (i = 0; i< MAX_VOC_SAMPLES; i++) @@ -41,7 +41,7 @@ void CalculateVOCAlarms(void) a += Gas_PPM[i]; if(i!=0) { - slope2 = slope1; + //slope2 = slope1; slope1 = Gas_PPM[i]-Gas_PPM[i-1]; if ((slope1>0)&&(slope1 > VOC_Slope)) { @@ -173,6 +173,7 @@ uint8_t Calculate_Gas_Power_Consumption() // WHS CalculateVOCAlarms(); } Report("Calculate_Gas_Power_Consumption",__FILE__,__LINE__,(int)i,RpWarning,VOC_Index,0); + Report("Calculate_Gas_Data Sample,VADC,Vsense",__FILE__,VsampleInBits,(int)VADC,RpWarning,(int)(VSensor*1000),0); return i;//PPM } diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index ceff20ea8..c16b1f21f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -747,6 +747,7 @@ uint32_t SecondaryPumpCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) else Report("Remove control callback failed",__FILE__,__LINE__,(int)SecondaryPumpControlId,RpWarning,(int)SecondaryPumpCallBackFunction,0); + return OK; } void PumpActivation(uint32_t seconds) diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c index 79ec46b18..00f4d73d6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/FPGA_Programming_Up.c @@ -18,6 +18,9 @@ #include "Modules/Control/MillisecTask.h" #include "Common/SWUpdate/FirmwareUpgrade.h" +#include "heaters/heaters_ex.h" +#include "StateMachines/Initialization/InitSequence.h" + extern short int main_vme(); FPGA_JTAG_GPIO FPGA_JTAG; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index a26813c4a..159ae372e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -327,10 +327,11 @@ uint32_t Read_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8 uint32_t Read_Head_MixChip_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-5 { uint32_t Status = OK; + /* uint32_t I2C_Slave_Add; uint32_t Channel; uint32_t VsampleInBits; - +*/ /* * zone Heater No. Power Current Shunt Resistor I2C ID I2C Address I2C * Dyer_Head zone_1 2 30W 1.25A 0.025 ohm 2 0x40 3 diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index 3c84ed049..b0b835342 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -5,8 +5,10 @@ * Author: shlomo */ -#include "driverlib/rom.h" +//#include #include "include.h" +#include "driverlib/rom.h" +#include "driverlib/flash.h" #include #include "FlashProgram.h" diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index f227dcd32..6f9ae4676 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -43,7 +43,7 @@ float MCU_E2PromReadMidtank_A(int MidtankId) float Data; if (MidtankId>=NUM_OF_MIDTANKS) { - Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)Data,0); + Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)MidtankId,0); return ERROR; } EEPROMRead((uint32_t *)&Data,Address*4, 4); @@ -57,7 +57,7 @@ float MCU_E2PromReadMidtank_B(int MidtankId) float Data; if (MidtankId>=NUM_OF_MIDTANKS) { - Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)Data,0); + Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)MidtankId,0); return ERROR; } EEPROMRead((uint32_t *)&Data,Address*4, 4); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 07f2f13f7..8e67de0f1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -42,6 +42,7 @@ #include "modules/thread/thread_ex.h" #include "modules/ids/ids_ex.h" #include "modules/Diagnostics/Diagnostics.h" +#include "Modules/General/MachineStatus.h" #include "drivers/Flash_Memory/Flash_Memory.h" #include "drivers/Flash_Memory/fatfs/ff.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index da928e8ae..aaa6f9a50 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -49,6 +49,8 @@ #include +#include "diagnostics.h" + extern F2_CTRL_REG F2_CTRL_Reg; char DiagnosticsToken[36+1] = {0}; @@ -63,26 +65,17 @@ uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue) uint32_t Diagnostics_OneSecControlTrigger(uint32_t IfIndex, uint32_t ReadValue); uint32_t DispensersCollection(uint32_t IfIndex, uint32_t ReadValue); -//#define REDUCED_DIAGNOSTICS DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT; #define DIAGNOSTICS_LIMIT 3 #define DIAGNOSTICS_DANCER_LIMIT 30 int DiagnosticsIndex = 0; -#ifdef REDUCED_DIAGNOSTICS -int DiagnosticCollectionLimit = 1; //number of data samples to collect before sending to the host -#else int DiagnosticCollectionLimit = 2; //number of data samples to collect before sending to the host -#endif //int DiagnosticLimit = eHundredMillisecond; //frequency of data collection //int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection -#ifdef REDUCED_DIAGNOSTICS -int DiagnosticLimit =eOneSecond; //frequency of data collection -#else int DiagnosticLimit =eHundredMillisecond; //frequency of data collection -#endif + int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection -//#define TEN_MSEC_COLLECTION //DigitalPin DigitalPinArray[1][DIAGNOSTICS_LIMIT+1]; double dancer1angle[DIAGNOSTICS_LIMIT+1]; double dancer2angle[DIAGNOSTICS_LIMIT+1]; @@ -109,6 +102,7 @@ double dispensermotorfrequency[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT+1]; double dispenserspressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT+1]; double MidTankpressure[MAX_SYSTEM_DISPENSERS][1]; double HeatersCurrent[NUM_OF_CURRENT_HEATERS][1]; +double VOC_Sensor; DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS]; DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; @@ -154,6 +148,8 @@ int diag_index=0; uint32_t diag_size[MAX_DIAG_LOG]; uint32_t diag_time[MAX_DIAG_LOG]; +Diagnostic_Mode DiagnosticMode = Diagnostic_Normal_Mode; + /******************** CODE ********************************************/ //********************************************************************** @@ -192,14 +188,35 @@ void DiagnosticsInit(void) return; } +/*typedef enum +{ + Diagnostic_Minimal_Mode, + Diagnostic_Normal_Mode, + Diagnostic_Extended_Mode, + Diagnostic_Extreme_Mode +}Diagnostic_Mode; +if (DiagnosticMode == Diagnostic_Minimal_Mode) +if (DiagnosticMode == Diagnostic_Normal_Mode) +if (DiagnosticMode == Diagnostic_Extended_Mode) +if (DiagnosticMode == Diagnostic_Extreme_Mode) +*/ +void SetDiagnosticMode(Diagnostic_Mode Mode) +{ + DiagnosticMode = Mode; + REPORT_MSG(Mode,"Diagnostic Mode set"); +} void SetDiagnosticCollectionLimit(int limit) { if ((limit)&&(limit<= DIAGNOSTICS_LIMIT)) DiagnosticCollectionLimit = limit; -#ifdef REDUCED_DIAGNOSTICS + DiagnosticLimit =eHundredMillisecond; //frequency of data collection + + if (DiagnosticMode <= Diagnostic_Normal_Mode) + { DiagnosticCollectionLimit = 1; //overrule - send at least once every second -#endif + DiagnosticLimit =eOneSecond; //frequency of data collection + } } uint8_t HeaterCounterIndex[MAX_HEATERS_NUM]= {0,0,0,0,0,0,0,0,0,0}; @@ -340,7 +357,6 @@ void DiagnosticTenMsecCollection(void) { if (DiagnosticsActive == false) return; -//#ifdef TEN_MSEC_COLLECTION /*if (JobIsActive()== false) return;*/ DiagnosticLoadDancer(WINDER_DANCER,Control_Read_Dancer_Position(WINDER_DANCER, 0,0)); @@ -352,7 +368,6 @@ void DiagnosticTenMsecCollection(void) DiagnosticLoadDancerError(FEEDER_DANCER,ThreadGetMotorCalculatedError(FEEDER_DANCER)); //DiagnosticLoadSpeedSensor(getSensorSpeedData()); -//#endif } void DiagnosticOneSecCollection(void) { @@ -388,19 +403,20 @@ void Diagnostic100msecCollection(void) return; //DiagnosticLoadSpeedSensor(getSensorSpeedData()); -#ifndef REDUCED_DIAGNOSTICS -#ifndef TEN_MSEC_COLLECTION - DiagnosticTenMsecCollection(); //call the 10msec function every 100 msec to reduce transport -#endif - //if (JobIsActive()) + if (DiagnosticMode == Diagnostic_Extreme_Mode) + DiagnosticTenMsecCollection(); //call the 10msec function every 100 msec to reduce transport + + if (DiagnosticMode >= Diagnostic_Extended_Mode) { - DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (FEEDER_MOTOR)); - DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (DRYER_MOTOR)); - DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (POOLER_MOTOR)); - DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR)); - DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR)); + if (JobIsActive()) + { + DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (FEEDER_MOTOR)); + DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (DRYER_MOTOR)); + DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (POOLER_MOTOR)); + DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR)); + DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR)); + } } -#endif /* DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP1)); @@ -425,13 +441,14 @@ void Diagnostic100msecCollection(void) MidTankpressure[i][0] = 1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000); } */ -#ifndef REDUCED_DIAGNOSTICS - for (i=0;i= Diagnostic_Extended_Mode)) { DiagnosticsMonitor.n_dancer1angle = DancerCounterIndex[0]; DiagnosticsMonitor.n_dancer2angle = DancerCounterIndex[1]; @@ -538,7 +554,6 @@ void SendDiagnostics(void) DiagnosticsMonitor.n_windermotor = MotorCounterIndex[WINDER_MOTOR]; DiagnosticsMonitor.n_screwmotor = MotorCounterIndex[SCREW_MOTOR]; } -#endif DiagnosticsMonitor.mixertemperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__MixerHeater]; DiagnosticsMonitor.headzone1temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1]; DiagnosticsMonitor.headzone2temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2]; @@ -654,6 +669,10 @@ void SendDiagnostics(void) DiagnosticsMonitor.n_headzone5_6heatercurrent = 1; DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6]; + VOC_Sensor = (double) getGasReading(); + DiagnosticsMonitor.n_filterdeltapressure = 1; + DiagnosticsMonitor.filterdeltapressure = &VOC_Sensor; + response.monitors = &DiagnosticsMonitor; //response.digitalpins = DigitalPinArray; response.n_componentsstates = 0; @@ -734,12 +753,10 @@ uint32_t DiagnosticsStart(void) DiagnosticsControlId = AddControlCallback(Diagnostics_ControlTrigger,DiagnosticLimit,TemplateDataReadCBFunction,0,0,0); else LOG_ERROR(DiagnosticsControlId,"Diagnostics restarted"); -#ifdef TEN_MSEC_COLLECTION if (Diagnostics10MSControlId == 0xFF) Diagnostics10MSControlId = AddControlCallback(Diagnostics_TenMiliControlTrigger,DiagnosticFastLimit,TemplateDataReadCBFunction,0,0,0); else LOG_ERROR(DiagnosticsControlId,"Diagnostics restarted"); -#endif if (Diagnostics1SecControlId == 0xFF) Diagnostics1SecControlId = AddControlCallback(Diagnostics_OneSecControlTrigger,eOneSecond,TemplateDataReadCBFunction,0,0,0); else @@ -823,13 +840,14 @@ uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue) { DiagnosticsMessageStruc Message; - //send message to the Millisec task - Message.messageId = DiagnosticsTenMiliTrigger; - Message.msglen = sizeof(DiagnosticsMessageStruc); - if (DiagnosticsMsgQ != NULL) - Mailbox_post(DiagnosticsMsgQ , &Message, BIOS_NO_WAIT); - - + if (DiagnosticMode == Diagnostic_Extreme_Mode) + { + //send message to the Millisec task + Message.messageId = DiagnosticsTenMiliTrigger; + Message.msglen = sizeof(DiagnosticsMessageStruc); + if (DiagnosticsMsgQ != NULL) + Mailbox_post(DiagnosticsMsgQ , &Message, BIOS_NO_WAIT); + } return OK; } @@ -869,9 +887,7 @@ void DiagnosticsTask(UArg arg0, UArg arg1) Diagnostic100msecCollection(); break; case DiagnosticsTenMiliTrigger: -#ifdef TEN_MSEC_COLLECTION DiagnosticTenMsecCollection(); -#endif break; case DiagnosticsOneSecTrigger: DiagnosticOneSecCollection(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h index a68731eea..d6d515598 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h @@ -12,9 +12,17 @@ extern bool blowervolatgedisplay; extern bool midtankDisplay; extern double voltage; -extern uint8_t* diagnosticscontainer_buffer; +extern char* diagnosticscontainer_buffer; +typedef enum +{ + Diagnostic_Minimal_Mode, + Diagnostic_Normal_Mode, + Diagnostic_Extended_Mode, + Diagnostic_Extreme_Mode +}Diagnostic_Mode; +void SetDiagnosticMode(Diagnostic_Mode Mode); uint32_t StartDiagnosticsRequestFunc(MessageContainer* requestContainer); uint32_t StopDiagnosticsRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index f5e33ed14..5a706e25c 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -185,6 +185,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->dispenserpresegmentwfcf = 80; EmbeddedParameters->has_startheatingoninitsequence = true; EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019 + EmbeddedParameters->n_generalparameters = 7; EmbeddedParameters->generalparameters = malloc (sizeof(double)*10); if (EmbeddedParameters->generalparameters) { @@ -194,6 +195,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->generalparameters[3] = 0.0; //CheckMotorAlarms EmbeddedParameters->generalparameters[4] = 800.0; //Winder homing time at end of job EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed + EmbeddedParameters->generalparameters[6] = Diagnostic_Normal_Mode; //Diagnostic Mode SetDiagnosticMode } EmbeddedParameters->has_currentalarmlowlimit = true; EmbeddedParameters->currentalarmlowlimit = 0.80; @@ -270,8 +272,15 @@ uint32_t EmbeddedParametersInit(void) } } + if (EmbeddedParameters->n_generalparameters >= 6) + { + IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag,EmbeddedParameters->generalparameters[5]); + } + else + { + IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag,900); + } IDS_Dispenser_SetTimeOutValues(EmbeddedParameters->closevalvetimeout, EmbeddedParameters->openvalvetimeout); - IDS_Dispenser_SetBackLashValues(EmbeddedParameters->initialdispenserpressure, EmbeddedParameters->initialdispensertimeout, EmbeddedParameters->initialdispensertimelag,EmbeddedParameters->generalparameters[5]); IDS_Dispenser_SetPrepareValues(EmbeddedParameters->dispenserbuildpressurespeed, EmbeddedParameters->dispenserbuildpressurelimit, EmbeddedParameters->dispenserbuildpressuretimeout, EmbeddedParameters->dispenserbuildpressurelag); IDS_Dispenser_SetPreSegmentWFCFValues(EmbeddedParameters->dispenserpresegmentwfcf, EmbeddedParameters->ids_presegment_wfcf_timebeforesegment); IDS_Dispenser_SetPreSegmentCleaningValues(EmbeddedParameters->ids_cleaningspeed,EmbeddedParameters->ids_cleaningstartspraypresegmenttime ,EmbeddedParameters->ids_cleaningstopbeforesegmenttime,EmbeddedParameters->ids_leftcleaningmotorspeed,EmbeddedParameters->ids_rightcleaningmotorspeed); @@ -284,15 +293,24 @@ uint32_t EmbeddedParametersInit(void) PowerOffSetTemperatureThreshold(EmbeddedParameters->powerofftemperaturelimit); InitSequenceSetStartHeating (EmbeddedParameters->startheatingoninitsequence); - bool checkHardLimitAlarms, checkCurrentAlarms, checkTamperAlarms, checkMotorAlarms; - checkHardLimitAlarms = (EmbeddedParameters->generalparameters[0] < 0.5)?false:true; - checkCurrentAlarms = (EmbeddedParameters->generalparameters[1] < 0.5)?false:true; - checkTamperAlarms = (EmbeddedParameters->generalparameters[2] < 0.5)?false:true; - checkMotorAlarms = (EmbeddedParameters->generalparameters[3] < 0.5)?false:true; - AlarmHandlingSetFlags(checkHardLimitAlarms,checkCurrentAlarms,checkTamperAlarms,checkMotorAlarms); - SetWinderBackToBaseTime((uint32_t) EmbeddedParameters->generalparameters[4]); - - + bool checkHardLimitAlarms = false, checkCurrentAlarms = false, checkTamperAlarms = false, checkMotorAlarms = false; + if (EmbeddedParameters->n_generalparameters >= 4) + { + checkHardLimitAlarms = (EmbeddedParameters->generalparameters[0] < 0.5)?false:true; + checkCurrentAlarms = (EmbeddedParameters->generalparameters[1] < 0.5)?false:true; + checkTamperAlarms = (EmbeddedParameters->generalparameters[2] < 0.5)?false:true; + checkMotorAlarms = (EmbeddedParameters->generalparameters[3] < 0.5)?false:true; + AlarmHandlingSetFlags(checkHardLimitAlarms,checkCurrentAlarms,checkTamperAlarms,checkMotorAlarms); + } + if (EmbeddedParameters->n_generalparameters >= 5) + SetWinderBackToBaseTime((uint32_t) EmbeddedParameters->generalparameters[4]); + if (EmbeddedParameters->n_generalparameters >= 7) + { + if(EmbeddedParameters->generalparameters[6]<0.5) SetDiagnosticMode(Diagnostic_Minimal_Mode); + else if(EmbeddedParameters->generalparameters[6]<1.5) SetDiagnosticMode(Diagnostic_Normal_Mode); + else if(EmbeddedParameters->generalparameters[6]<2.5) SetDiagnosticMode(Diagnostic_Extended_Mode); + else if(EmbeddedParameters->generalparameters[6]<3.5) SetDiagnosticMode(Diagnostic_Extreme_Mode); + } PowerIdleSetParameters(EmbeddedParameters->switchtoidletimeinseconds,EmbeddedParameters->idledriertemperature,EmbeddedParameters->idleheadtemperature,EmbeddedParameters->idlemixertemperature); return Fresult; diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c index 56f88a040..7949ee0c2 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c @@ -19,6 +19,10 @@ #include "PMR/MachineStatus/MachineState.pb-c.h" #include "PMR/MachineStatus/IDSPackLevel.pb-c.h" +#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" + +#include "Modules/General/MachineStatus.h" + #include "modules/ids/ids_ex.h" MachineState StoredMachineStatus = MACHINE_STATE__Ready; @@ -103,6 +107,10 @@ uint32_t MachineUpdateInitFunc(MessageContainer* requestContainer) start_machine_status_update_request__free_unpacked(request,NULL); return status; } +void MachineUpdateStopReporting(void) +{ + MachineUpdateToken[0] = 0; +} uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer) { @@ -125,8 +133,4 @@ uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer) return OK; } -void MachineUpdateStopReporting(void) -{ - MachineUpdateToken[0] = 0; -} diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h index 7530c5bcd..489a8f638 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h @@ -13,6 +13,7 @@ uint32_t MachineUpdateInitFunc(MessageContainer* requestContainer); uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer); void SetMachineStatus (MachineState State); +int MachineUpdateResponseFunc(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 4789db31f..050bb65b8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -196,11 +196,11 @@ void HeatersControlStop(void) //{eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP1, 0,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, //{eOneSecond,ALARM_SOURCE_TYPE__TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP2, 1,40,true,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE }, typedef enum{ - ENCLOSURE_INTERNAL_TEMP, - CABINET_INTERNAL_TEMP, - MAIN_CARD_INTERNAL_TEMP, + INTERNAL_ENCLOSURE_TEMP, + INTERNAL_CABINET_TEMP, + INTERNAL_MAIN_CARD_TEMP, MAX_INTERNAL_ALARMS -}; +}InternalTemperatureTestPointsEnum; int InternalAlarmCounter[MAX_INTERNAL_ALARMS] = {0,0,0}; uint32_t InternalId2PT100Id[MAX_INTERNAL_ALARMS] = {TEMP_SENSE_AN_ENCLOSURETEMP1,TEMP_SENSE_AN_ENCLOSURETEMP1,0xFF}; int32_t InternalOverHeatCounter [MAX_INTERNAL_ALARMS] = {0,0,0}; @@ -557,7 +557,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) HeaterCmd[HeaterId].targettemperatue = 0; AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); - return ERROR; + return; } } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 4f60cfa14..0de3fa1f3 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -649,7 +649,7 @@ c. Go to step 2.a x Segment.BrushStopsCount. IDS_Active = true; Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); - JobTicket* JobTicket = JobDetails; + //JobTicket* JobTicket = JobDetails; for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) @@ -814,7 +814,7 @@ c. Go to step 2.a x Segment.BrushStopsCount. Report("IDS_PreSegmentPrepare_Callback SafeRemoveControlCallback",__FILE__,DispenserPrepareControlId,InterSegmentStepsCount,RpWarning,(int)NumOfActiveDispensers,0); SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); DispenserPrepareControlId = 0xFF; - + PreSegmentWCFStarted = true; setRapidPressureRead(false); } return OK; @@ -979,7 +979,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); } } - if ((InterSegmentStartWFCFDispensers > 10000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+10000))) + if ((InterSegmentStartWFCFDispensers > 12000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+12000))) { //start prepare 4 seconds before wcf IDSPresegmentPrepareStart(); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 7d4b66dfb..1f9897905 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -17,6 +17,9 @@ #include "Modules/General/process.h" #include "Modules/control/pidalgo.h" +#include "Modules/heaters/heaters_ex.h" +#include "StateMachines/Initialization/InitSequence.h" + #include "PMR/Hardware/HardwareMotor.pb-c.h" #include "PMR/Hardware/HardwareMotorType.pb-c.h" #include "PMR/Hardware/HardwareDancerType.pb-c.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index c5e124ad3..e01d12a05 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -282,7 +282,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) double temp,tempScrewSpeed; double screw_horizontal_speed = 0; double RotationsPerSecond; - double Averagewinderspeed = 0; + //double Averagewinderspeed = 0; // { // TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter]; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 9e77f2de8..59542ec38 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -451,7 +451,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //read value is the dancer angle int i,index=MAX_THREAD_MOTORS_NUM; int DancerId; - int32_t TranslatedReadValue, avreageSampleValue = 0,avreageMotorSampleValue = 0; + int32_t TranslatedReadValue, avreageSampleValue = 0;//,avreageMotorSampleValue = 0; //double tempcalcspeed = 0; double calculated_speed; double NormalizedError; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 73421f142..3e2fe32be 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -119,8 +119,6 @@ uint32_t PowerOffHeadCleanCallback(uint32_t DispenserId, uint32_t ReadValue) /*******************************************************************************************************/ uint32_t PowerOffHeadClean(void) { - uint32_t status; - //TBD ThreadCleaningJobFunc(50); if (PowerOffHeadCleanControlId != 0xFF) @@ -141,6 +139,8 @@ uint32_t PowerOffDispenserHomingCallback(uint32_t DispenserId, uint32_t ReadValu { DispenserHomingActive[DispenserId] = false; REPORT_MSG (DispenserId, "PowerOffDispenserHomingCallback"); + + return OK; } #define TI_DISPENSER_ID 4 #define DEFAULT_MIXER_CLEANING_SPEED 1000 @@ -174,6 +174,7 @@ uint32_t PowerOffMixerFlushDispenserStopCallback(void) REPORT_MSG (PowerOffMachineState, "PowerOffMixerFlushDispenserStopCallback"); IDS_Dispenser_Start_Motor_and_Open_Valve(TI_DISPENSER_ID,DEFAULT_MIXER_CLEANING_SPEED,NULL); PowerOffHeadCleanControlId = AddControlCallback( PowerOffMixerFlushCallback,DEFAULT_MIXER_CLEANING_TIMEOUT , TemplateDataReadCBFunction,0,0, 0 ); + return OK; } /*******************************************************************************************************/ uint32_t PowerOffMixerFlush(void) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index af795d91c..3720b884a 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -61,6 +61,8 @@ #include "StateMachines/Initialization/PowerIdle.h" +#include "drivers/Motors/Motor.h" + #include "./printingSTM.h" #include "modules/thread/thread_ex.h" #include "modules/AlarmHandling/AlarmHandling.h" @@ -418,60 +420,68 @@ uint32_t ThreadCleaningJobFunc(int speed) } else { - memcpy(&CopyConfigured,&Configured,sizeof(CopyConfigured)); - //set the job handler to ignore heaters, ids and waste in the state machine - Configured[Module_Thread] = true; - Configured[Module_Winder] = true; - Configured[Module_IDS] = false; - Configured[Module_Heaters] = false; - Configured[Module_Waste] = false; - //set the requested speed without changing other process parameters - memcpy (&ProcessParametersCopy,&ProcessParametersKeep,sizeof(ProcessParameters)); - if(speed) - ProcessParametersCopy.dyeingspeed = speed; - else - ProcessParametersCopy.dyeingspeed = 40; - if (HandleProcessParameters(&ProcessParametersCopy)!= OK) + if (isMotorConfigured(CLEANER_DISPENSER + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==false) { - status = FAILED; + status = ERROR; + LOG_ERROR(JobIsActive(),"Jog No cleaner dispenser"); } else { - //load essential job prameters to enable thread running - Ticket.uploadstrategy = JOB_UPLOAD_STRATEGY__Default; - Ticket.n_segments = 1; - Ticket.enableintersegment = true; - Ticket.intersegmentlength = 200; - n_segments = 2; - Ticket.segments = my_malloc(sizeof(Ticket.segments)*2); - TSegment = my_malloc(sizeof(JobSegment)); - Tspool = my_malloc(sizeof(JobSpool)); - TbrushStop = my_malloc(sizeof(JobBrushStop)); - TSegment->length = 200.0; - TSegment->n_brushstops = 1; - TSegment->brushstops = my_malloc(sizeof(TSegment->brushstops)); - TSegment->brushstops[0] = TbrushStop; - Tdispenser = my_malloc(sizeof(JobDispenser)); - - TbrushStop->has_index =true; - TbrushStop->index = 0; - TbrushStop->n_dispensers = 1; - TbrushStop->dispensers = my_malloc(sizeof(TbrushStop->dispensers)); - TbrushStop->dispensers[0] = Tdispenser; - Tdispenser->nanolitterpersecond = 10000; - Tdispenser->nanoliterperpulse = 2.34; - Tdispenser->dispenserstepdivision = DISPENSER_STEP_DIVISION__Auto; - Ticket.segments[0] = TSegment; - Ticket.segments[1] = TSegment; - Tspool->backingrate = 32; - Tspool->bottombackingrate = 32; - Tspool->segmentoffsetpulses = 1000; - Tspool->startoffsetpulses = 220; - Tspool->rotationsperpassage = 3.1415926*2; - Ticket.spool = Tspool; - CurrentJob = &Ticket; - InternalWindingConfigMessage(Tspool); - StartJob(&Ticket); + memcpy(&CopyConfigured,&Configured,sizeof(CopyConfigured)); + //set the job handler to ignore heaters, ids and waste in the state machine + Configured[Module_Thread] = true; + Configured[Module_Winder] = true; + Configured[Module_IDS] = false; + Configured[Module_Heaters] = false; + Configured[Module_Waste] = false; + //set the requested speed without changing other process parameters + memcpy (&ProcessParametersCopy,&ProcessParametersKeep,sizeof(ProcessParameters)); + if(speed) + ProcessParametersCopy.dyeingspeed = speed; + else + ProcessParametersCopy.dyeingspeed = 40; + if (HandleProcessParameters(&ProcessParametersCopy)!= OK) + { + status = FAILED; + } + else + { + //load essential job prameters to enable thread running + Ticket.uploadstrategy = JOB_UPLOAD_STRATEGY__Default; + Ticket.n_segments = 1; + Ticket.enableintersegment = true; + Ticket.intersegmentlength = 200; + n_segments = 2; + Ticket.segments = my_malloc(sizeof(Ticket.segments)*2); + TSegment = my_malloc(sizeof(JobSegment)); + Tspool = my_malloc(sizeof(JobSpool)); + TbrushStop = my_malloc(sizeof(JobBrushStop)); + TSegment->length = 200.0; + TSegment->n_brushstops = 1; + TSegment->brushstops = my_malloc(sizeof(TSegment->brushstops)); + TSegment->brushstops[0] = TbrushStop; + Tdispenser = my_malloc(sizeof(JobDispenser)); + + TbrushStop->has_index =true; + TbrushStop->index = 0; + TbrushStop->n_dispensers = 1; + TbrushStop->dispensers = my_malloc(sizeof(TbrushStop->dispensers)); + TbrushStop->dispensers[0] = Tdispenser; + Tdispenser->nanolitterpersecond = 10000; + Tdispenser->nanoliterperpulse = 2.34; + Tdispenser->dispenserstepdivision = DISPENSER_STEP_DIVISION__Auto; + Ticket.segments[0] = TSegment; + Ticket.segments[1] = TSegment; + Tspool->backingrate = 32; + Tspool->bottombackingrate = 32; + Tspool->segmentoffsetpulses = 1000; + Tspool->startoffsetpulses = 220; + Tspool->rotationsperpassage = 3.1415926*2; + Ticket.spool = Tspool; + CurrentJob = &Ticket; + InternalWindingConfigMessage(Tspool); + StartJob(&Ticket); + } } } return status; diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild.cs index 790bd6891..ff970f3b2 100644 --- a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs +++ b/Software/Stubs Collection/stubs/embeddedparametersbuild.cs @@ -31,17 +31,17 @@ configurationParameters.OverHeatCountLimit = 3; configurationParameters.UnderHeatCountLimit = 3; // time of motor activity before opening the valve or after closing the valve, in milliseconds -configurationParameters.CloseValveTimeout = 255; -configurationParameters.OpenValveTimeout = 255; +configurationParameters.CloseValveTimeout = 50; +configurationParameters.OpenValveTimeout = 50; //backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters) -configurationParameters.InitialDispenserPressure = 1.5; +configurationParameters.InitialDispenserPressure = 1.2; configurationParameters.InitialDispenserTimeout = 60000; //20 seconds configurationParameters.InitialDispenserTimeLag = 100; //job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed -configurationParameters.DispenserBuildPressureSpeed = 800; //no more than 1000 -configurationParameters.DispenserBuildPressureLimit = 0.9; +configurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000 +configurationParameters.DispenserBuildPressureLimit = 1.2; configurationParameters.DispenserBuildPressureTimeout = 80000; configurationParameters.DispenserBuildPressureLag = 50; @@ -57,12 +57,12 @@ configurationParameters.DCHeatersUpperOperationLimit = 1005; configurationParameters.MidTankPressureCorrection = 0.0; //waste factor for intersegment pressure building -configurationParameters.DispenserPresegmentWFCF = 80; +configurationParameters.DispenserPresegmentWFCF = 40; //how much time to start the WFCF process (pressure buildup) before segment start -configurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 1500; +configurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 30000; //flag: start heaters according to saved process parameters upon init? -configurationParameters.StartHeatingOnInitSequence = true; +configurationParameters.StartHeatingOnInitSequence = false; // current test for the heaters - alarm thresholds configurationParameters.CurrentAlarmLowLimit = 0.80; @@ -70,7 +70,7 @@ configurationParameters.CurrentAlarmHighLimit = 1.07; configurationParameters.IDSSegmentRefillTimeout = 5000; configurationParameters.IDSPreSegmentBuildupTime = 5000; -configurationParameters.IDSCleaningSpeed = 50; +configurationParameters.IDSCleaningSpeed = 534; configurationParameters.IDSCleaningStopBeforeSegmentTime = 3000; configurationParameters.IDSCleaningStartSprayPreSegmentTime = 1000; configurationParameters.IDSLeftCleaningMotorSpeed = 30; @@ -87,7 +87,7 @@ Double checkHardLimitAlarms = new Double(); checkHardLimitAlarms = 1.0; configurationParameters.GeneralParameters.Add(checkHardLimitAlarms); Double checkCurrentAlarms = new Double(); -checkCurrentAlarms = 1.0; +checkCurrentAlarms = 0.0; configurationParameters.GeneralParameters.Add(checkCurrentAlarms); //check the tamper alarms Double checkTamperAlarms = new Double(); @@ -105,6 +105,9 @@ Double DispenserInitialPressureSpeed = new Double(); DispenserInitialPressureSpeed = 1000.0; configurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed); +Double SetDiagnosticMode = new Double(); +SetDiagnosticMode = 1.0; +configurationParameters.GeneralParameters.Add(SetDiagnosticMode); File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes()); -- cgit v1.3.1 From 3ea86783edbeb5a317cacfa0e6c6451759c2506a Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 16 Sep 2019 10:29:51 +0300 Subject: Version 1.4.4.8: stop thread loading, bypass safety on dispenser homing and priming --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 2 ++ .../Embedded/Drivers/Motors/MotorActions.c | 9 +++++ .../Embedded_SW/Embedded/Modules/General/buttons.c | 2 +- .../Embedded/Modules/Heaters/Heaters_print.c | 10 +++--- .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 8 ++++- .../Modules/Stubs_Handler/temperature_sensor.c | 2 ++ .../Embedded/Modules/Thread/ThreadLoad.c | 39 +++++++++++++--------- 8 files changed, 51 insertions(+), 23 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 455d72c7a..833b8b66c 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,4,7};//remove AUTO_HOME_DISPENSERS + midtank pressure new calculation +TangoVersion_t _gTangoVersion = {1,4,4,8};//remove AUTO_HOME_DISPENSERS + midtank pressure new calculation #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 3de224477..afacb50c3 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -234,6 +234,8 @@ uint32_t MotorAbortMovetoLimitSwitch (TimerMotors_t _motorId); uint32_t MotorMoveToStopper (TimerMotors_t _motorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout); uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callback,uint32_t timeout); +uint32_t MotorStopAction (TimerMotors_t MotorId); //Stop the controlled action of a motor + uint32_t MotorGoTo(TimerMotors_t _motorIdn, uint32_t Steps); void Combined_Motor_Driver_Mode(TimerMotors_t _motorId, MOTDRIVER_MODE New_Mode);// New_mode: Current or Voltage diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index b4c3a7da7..5861d6a7a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -244,6 +244,15 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) / return OK; } +uint32_t MotorStopAction (TimerMotors_t MotorId) //TODO +{ + Report("MotorStopAction",__FILE__,MotorId,MotorControlId[MotorId],RpWarning,MotorControlCallback[MotorId] ,0); + RemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] ); + MotorControlId[MotorId] = 0xFF; + MotorControlCallback[MotorId] = NULL; + MotorStop(MotorId,Hard_Hiz); + +} uint32_t MotorMoveToStopper (TimerMotors_t MotorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout) //TODO { //assert (callback); diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index b44cba8b4..b62b0116e 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -670,7 +670,7 @@ void test_avi() uint32_t LoadLongPress( button *pBtn) { - + Thread_Load_End(); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 34fd48a17..503d3ee0b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -541,8 +541,8 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) if((HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain])|| (HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary])) { - ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,RpError, 0,0); - ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,RpError, 0,0); + ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,RpError, HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0); + ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,RpError, HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary],0); if (ControlIdtoMaxHeaterId [HeaterId] != 0xFF) { RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); @@ -940,7 +940,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) //Heaters OFF until coming into the proportional band HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); - ReportWithPackageFilter(HeatersFilter, "unconfigured",__FILE__,__LINE__,0,RpError, 0,0); + //ReportWithPackageFilter(HeatersFilter, "unconfigured",__FILE__,__LINE__,0,RpError, 0,0); return ERROR; } if (abs(readValue - HeaterPreviousRead[index])>2000) @@ -966,7 +966,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) } HeaterPreviousRead[index] = readValue; - if (readValue>(HeaterCmd[index].targettemperatue+2)) + if (readValue>(HeaterCmd[index].targettemperatue+200)) { ReportWithPackageFilter(HeatersFilter, "AC OverHeating in progress",__FILE__,readValue,HeaterReady[index],RpError, HeaterAtTemp[index],0); } @@ -1162,7 +1162,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) HeaterRecalculateHeaterParams(index, 0); return ERROR; } - if (readValue>(HeaterCmd[index].targettemperatue+2)) + if (readValue>(HeaterCmd[index].targettemperatue+200)) { ReportWithPackageFilter(HeatersFilter, "DC OverHeating in progress",__FILE__,readValue,HeaterReady[index],RpError, HeaterAtTemp[index],0); } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 1baf9ceb9..a9e8a5ee1 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -154,6 +154,8 @@ uint32_t IDS_HomeDispenserBackMoveCallback(uint32_t motorId, uint32_t ReadValue) MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]); HomingActive[DispenserId]= false; PrimingActive[DispenserId]= false; + Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE + //close dry air valve in the dispenser Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); Disable_MidTank_Pressure_Reading(DispenserId); @@ -217,6 +219,7 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr else HomingActive[DispenserId] = true; + Control_TCA9534ByPass(DispenserId,ENABLE);// use ENABLE or DISABLE HomingRequestCallback[DispenserId] = callback; TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1 + DispenserId; @@ -297,6 +300,7 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId) Lubricant_2Way_Valve (STOP); } PrimingActive[DispenserId] = false; + Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE if (Extended_Motor_Param == true) Power_Step_01_Dispenser_Mode(DispenserId,Voltage); MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]); @@ -317,6 +321,7 @@ uint32_t IDS_StopHomeDispenserBuildPressure (uint32_t DispenserId) } else HomingActive[DispenserId] = false; + Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE TimerMotors_t motorId = (DispenserId)+HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1; MotorAbortMovetoLimitSwitch(motorId); @@ -376,6 +381,7 @@ uint32_t IDS_EmptyDispenserCallback(uint32_t motorId, uint32_t ReadValue) Power_Step_01_Dispenser_Mode(DispenserId,Voltage); MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]); PrimingActive[DispenserId]= false; + Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE if (DispenserId == LUBRICANT_DISPENSER) { Lubricant_2Way_Valve (STOP); @@ -401,7 +407,7 @@ uint32_t IDS_EmptyDispenser (uint32_t DispenserId, uint32_t speed , callback_fpt else PrimingActive[DispenserId] = true; HomingRequestCallback[DispenserId] = callback; - + Control_TCA9534ByPass(DispenserId,ENABLE);// use ENABLE or DISABLE TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1 + DispenserId; if ( Dispenser_Id_to_LS_Empty_Id[DispenserId] != MAX_GPI) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c index c6f253556..67d61ea65 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c @@ -71,6 +71,7 @@ #include "driverlib/systick.h" #include "driverlib/adc.h" #include +#include "include.h" //***************************************************************************** @@ -231,6 +232,7 @@ int temperature_main(){ // Display the temperature value on the console. // //UARTprintf("Temperature = %3d*C or %3d*F\r", TempValueC, TempValueF); + Report("Temperature",__FILE__,__LINE__,TempValueC,RpWarning,TempValueF ,0); // // This function provides a means of generating a constant length diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 1f9897905..1575123e4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -68,7 +68,7 @@ uint8_t NumberOfDrierLoaderCycles = 0; uint32_t status = OK; - uint32_t ControlId = 0xFF,PullerControlId = 0xFF,WinderControlId = 0xFF; + uint32_t LoadingControlId = 0xFF,PullerControlId = 0xFF,WinderControlId = 0xFF; uint32_t ThreadLoadStateMachine( THREAD_LOAD_STAGES_ENUM LoadStages); uint32_t ThreadLoadControlCBFunction(uint32_t index, uint32_t ReadValue); uint32_t Thread_Load_Dryer_UnLoading(void); @@ -425,11 +425,11 @@ { Report("Thread_Load_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200); - if(ControlId != 0xFF) + if(LoadingControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); - RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); - ControlId = 0xFF; + RemoveControlCallback(LoadingControlId, ThreadLoadControlCBFunction ); + LoadingControlId = 0xFF; } if (CallbackCounter) { @@ -452,11 +452,11 @@ { Report("Thread_Load_Dryer_Loading_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); Report("Thread_Load_Dryer_Loading_Callback details",__FILE__,__LINE__,MotorId,RpMessage,CallbackCounter,0); - /*if(ControlId != 0xFF) + /*if(LoadingControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); - RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); - ControlId = 0xFF; + RemoveControlCallback(LoadingControlId, ThreadLoadControlCBFunction ); + LoadingControlId = 0xFF; }*/ MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Dryer_MovetoEncoderPosition_Callback,10000); return OK; @@ -499,8 +499,8 @@ MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4); - ControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); - Report("AddControlCallback feeder",__FILE__,__LINE__,ControlId,RpMessage,IfTypeThread*0x100+FEEDER_MOTOR,0); + LoadingControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); + Report("AddControlCallback feeder",__FILE__,__LINE__,LoadingControlId,RpMessage,IfTypeThread*0x100+FEEDER_MOTOR,0); CallbackCounter++; Report("Thread_Load_Dryer_Loading",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0); MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize, @@ -515,8 +515,8 @@ uint32_t Thread_Load_Jog_ThreadStop(uint32_t index, uint32_t ReadValue) { REPORT_MSG(LoadStages, "Thread Load State Machine step"); - SafeRemoveControlCallback(ControlId, Thread_Load_Jog_ThreadStop ); - ControlId = 0xFF; + SafeRemoveControlCallback(LoadingControlId, Thread_Load_Jog_ThreadStop ); + LoadingControlId = 0xFF; ThreadAbortJoggingFunc(); LoadStages++; ThreadLoadStateMachine(LoadStages); @@ -527,17 +527,17 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); ThreadJoggingFunc(20); - ControlId = AddControlCallback(Thread_Load_Jog_ThreadStop, eOneSecond*5,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); + LoadingControlId = AddControlCallback(Thread_Load_Jog_ThreadStop, eOneSecond*5,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR); return OK; } uint32_t Thread_Load_End(void) { REPORT_MSG(LoadStages,"Loading Ended"); - if(ControlId != 0xFF) + if(LoadingControlId != 0xFF) { MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz); - RemoveControlCallback(ControlId, ThreadLoadControlCBFunction ); - ControlId = 0xFF; + RemoveControlCallback(LoadingControlId, ThreadLoadControlCBFunction ); + LoadingControlId = 0xFF; } if(PullerControlId != 0xFF) { @@ -551,6 +551,15 @@ RemoveControlCallback(WinderControlId, ThreadLoadControlCBFunction ); WinderControlId = 0xFF; } + + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_RLOADING); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_LLOADING); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_RDANCER); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_LDANCER1); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID); + MotorStopAction(HARDWARE_MOTOR_TYPE__MOTO_DH_LID); + MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Hard_Stop); LoadStages = THREAD_LOAD_INIT; return OK; } -- cgit v1.3.1