diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-26 20:16:36 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-26 20:16:36 +0300 |
| commit | ffcb06ec20597465cdbe62040bacfb4bfc7d5de0 (patch) | |
| tree | a04dc382c38a8e18efb5957226a2af9d2b552296 /Software | |
| parent | e263a67205beca03687895166cf462f07f24187f (diff) | |
| parent | d3ec83acd93eb8338f3d846e9e3c1bedfb480ce1 (diff) | |
| download | Tango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.tar.gz Tango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software')
19 files changed, 407 insertions, 115 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index 74c64b8b5..96f5b6a3e 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -281,6 +281,9 @@ void receive_callback(char* buffer, size_t length) case MESSAGE_TYPE__SetComponentValueRequest: SetComponentValueRequestRequestFunc(requestContainer); break; + case MESSAGE_TYPE__SetDigitalOutRequest: + SetDigitalOutRequestRequestFunc(requestContainer); + break; case MESSAGE_TYPE__StubI2CReadBytesRequest: Stub_I2CReadBytesRequest(requestContainer); break; 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 537bacea0..608b8d0ad 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -90,7 +90,7 @@ static FpgaMotMap_t FpgaMotMap[NUM_OF_MOTORS] = {&F1_MOTO_RLOADARM_A1_TX_00, &F1_MOTO_RLOADARM_A1_TX_01, &F1_MOTO_RLOADARM_A1_RX_00 ,&F1_MOTO_RLOADARM_A1_RX_01 ,&F1_MOTO_RLOADARM_A1_WORDS ,&F1_Moto_Driver_NBUSY2_D, &F1_SPI_Busy1_D}, //MOTOR_RLOADING - Right Loading {&F1_MOTO_RLOADING_A1_TX_00, &F1_MOTO_RLOADING_A1_TX_01, &F1_MOTO_RLOADING_A1_RX_00, &F1_MOTO_RLOADING_A1_RX_01, &F1_MOTO_RLOADING_A1_WORDS, &F1_Moto_Driver_NBUSY2_D, &F1_SPI_Busy1_D}, - +/* //MOTOR_SPARE1_1 - Spare {&F3_MOTO_SPARE1_1_A1_TX_00, &F3_MOTO_SPARE1_1_A1_TX_01, &F3_MOTO_SPARE1_1_A1_RX_00 ,&F3_MOTO_SPARE1_1_A1_RX_01 ,&F3_MOTO_SPARE1_1_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D}, //MOTOR_SPARE1_2 - Spare @@ -99,7 +99,7 @@ static FpgaMotMap_t FpgaMotMap[NUM_OF_MOTORS] = {&F3_MOTO_SPARE2_1_A1_TX_00, &F3_MOTO_SPARE2_1_A1_TX_01, &F3_MOTO_SPARE2_1_A1_RX_00 ,&F3_MOTO_SPARE2_1_A1_RX_01 ,&F3_MOTO_SPARE2_1_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D}, //MOTOR_SPARE2_2 - Spare {&F3_MOTO_SPARE2_2_A1_TX_00, &F3_MOTO_SPARE2_2_A1_TX_01, &F3_MOTO_SPARE2_2_A1_RX_00 ,&F3_MOTO_SPARE2_2_A1_RX_01 ,&F3_MOTO_SPARE2_2_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D}, - +*/ }; uint8_t FPGA_SPI_Transnit(TimerMotors_t _motorId) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 477fc0732..a85e1cfde 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -50,12 +50,17 @@ uint32_t Diagnostics_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue); uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue); +DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT; + #define DIAGNOSTICS_LIMIT 10 #define DIAGNOSTICS_DANCER_LIMIT 100 int DiagnosticsIndex = 0; int DiagnosticCollectionLimit = 3; //number of data samples to collect before sending to the host -int DiagnosticLimit = eHundredMillisecond; //frequency of data collection +//int DiagnosticLimit = eHundredMillisecond; //frequency of data collection +//int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection +int DiagnosticLimit =eHundredMillisecond; //frequency of data collection int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection + //DigitalPin DigitalPinArray[1][DIAGNOSTICS_LIMIT]; double dancer1angle[DIAGNOSTICS_LIMIT]; double dancer2angle[DIAGNOSTICS_LIMIT]; @@ -81,6 +86,9 @@ double dryerzone3temperature[DIAGNOSTICS_LIMIT]; double dispensermotorfrequency[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT]; double dispenserspressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT]; +DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS]; +DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; + /*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser2motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser3motorfrequency[DIAGNOSTICS_LIMIT]; @@ -116,12 +124,23 @@ typedef struct DiagnosticsMessage{ void DiagnosticsInit(void) { + int i; Error_Block eb; Error_init(&eb); DiagnosticsMsgQ = Mailbox_create(sizeof(DiagnosticsMessageStruc), 20, NULL,&eb); + DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)malloc(sizeof(DoubleArray *)*8); + DiagnosticsMonitor.dispenserspressure = (DoubleArray**)malloc(sizeof(DoubleArray)*8); + DiagnosticsMonitor.dispenserslinearpositions = (DoubleArray**)malloc(sizeof(DoubleArray)*8); + DiagnosticsMonitor.dispensersangularencoders = (DoubleArray**)malloc(sizeof(DoubleArray)*8); + for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++) + { + double_array__init(&DispenserFreq[i]); + double_array__init(&DiagnosticsDispenserPressure[i]); + } + return; } uint8_t HeaterCounterIndex[MAX_HEATERS_NUM]= {0,0,0,0,0,0,0,0,0,0}; @@ -161,7 +180,7 @@ void DiagnosticLoadTemperature(int HeaterId, int temperature) } void DiagnosticLoadSpeedSensor(uint32_t value) { - SpeedValue[SpeedCounterIndex] = value/100; + SpeedValue[SpeedCounterIndex] = value; SpeedCounterIndex++; if (SpeedCounterIndex>=DIAGNOSTICS_DANCER_LIMIT ) SpeedCounterIndex = 0; @@ -183,8 +202,8 @@ void DiagnosticTenMsecCollection(void) { if (DiagnosticsActive == false) return; - if (JobIsActive()== false) - return; + /*if (JobIsActive()== false) + return;*/ DiagnosticLoadDancer(WINDER_DANCER,Control_Read_Dancer_Position(WINDER_DANCER, 0,0)); DiagnosticLoadDancer(POOLER_DANCER,Control_Read_Dancer_Position(POOLER_DANCER, 0,0)); DiagnosticLoadDancer(FEEDER_DANCER,Control_Read_Dancer_Position(FEEDER_DANCER, 0,0)); @@ -201,7 +220,7 @@ void Diagnostic100msecCollection(void) // dancer2angle[DiagnosticsIndex] = Control_Read_Dancer_Position(POOLER_DANCER, 0,0); // dancer3angle[DiagnosticsIndex] = Control_Read_Dancer_Position(FEEDER_DANCER, 0,0); - if (JobIsActive()) + //if (JobIsActive()) { /* DiagnosticLoadMotor(FEEDER_MOTOR, MotorGetSpeed (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING)); ThreadGetMotorSpeed DiagnosticLoadMotor(DRYER_MOTOR, MotorGetSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING)); @@ -287,11 +306,9 @@ void DiagnosticsReset(void) DiagnosticsIndex = 0; } -DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT; -//Double *DispenserFreq[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0}; -//Double *DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0}; -DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS] = {DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT}; -DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS] = {DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT}; +int j=0; +MessageContainer diagnosticsresponseContainer; +uint8_t* diagnosticscontainer_buffer; void SendDiagnostics(void) { MessageContainer responseContainer; @@ -303,7 +320,7 @@ void SendDiagnostics(void) - if (JobIsActive()) + //if (JobIsActive()) { DiagnosticsMonitor.n_dispenser1motorfrequency = DiagnosticsIndex; DiagnosticsMonitor.n_dispenser2motorfrequency = DiagnosticsIndex; @@ -330,7 +347,7 @@ void SendDiagnostics(void) DiagnosticsMonitor.dancer2angle = dancer2angle; DiagnosticsMonitor.dancer3angle = dancer3angle; */ - if (JobIsActive()) + //if (JobIsActive()) { DiagnosticsMonitor.n_dancer1angle = DancerCounterIndex[0]; DiagnosticsMonitor.n_dancer2angle = DancerCounterIndex[1]; @@ -382,34 +399,43 @@ void SendDiagnostics(void) DiagnosticsMonitor.blowervoltage = &voltage; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); -/* - if (JobIsActive()) + int i; + DiagnosticsMonitor.n_dispensersmotorsfrequency = 0; + /**/ + //if (JobIsActive()) { - + j++; DiagnosticsMonitor.n_dispensersmotorsfrequency = MAX_SYSTEM_DISPENSERS; - DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)malloc(sizeof(DoubleArray)*8); - - for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++) + if (DiagnosticsMonitor.dispensersmotorsfrequency) { - //double_array__init(&DispenserFreq[i]); - //DispenserFreq[i] = dispensermotorfrequency[i]; - DispenserFreq[i].data = dispensermotorfrequency[i]; - DispenserFreq[i].n_data = DiagnosticsIndex; - DiagnosticsMonitor.dispensersmotorsfrequency[i] = &DispenserFreq[i]; + for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++) + { + //double_array__init(&DispenserFreq[i]); + //DispenserFreq[i] = dispensermotorfrequency[i]; + DispenserFreq[i].data = dispensermotorfrequency[i]; + DispenserFreq[i].n_data = DiagnosticsIndex; + DiagnosticsMonitor.dispensersmotorsfrequency[i] = &DispenserFreq[i]; + } } } - - DiagnosticsMonitor.n_dispenserspressure = MAX_SYSTEM_DISPENSERS; - DiagnosticsMonitor.dispenserspressure = (DoubleArray**)malloc(sizeof(DoubleArray)*8); - for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++) + /**/ + DiagnosticsMonitor.n_dispenserspressure = 0; + /**/ + DiagnosticsMonitor.n_dispenserspressure = MAX_SYSTEM_DISPENSERS; + if (DiagnosticsMonitor.dispenserspressure) { - //DiagnosticsDispenserPressure[i] = dispenserspressure[i]; - //double_array__init(&DiagnosticsDispenserPressure[i]); - DiagnosticsDispenserPressure[i].data = dispenserspressure[i]; - DiagnosticsDispenserPressure[i].n_data = DiagnosticsIndex; - DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i]; + for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++) + { + //DiagnosticsDispenserPressure[i] = dispenserspressure[i]; + //double_array__init(&DiagnosticsDispenserPressure[i]); + DiagnosticsDispenserPressure[i].data = dispenserspressure[i]; + DiagnosticsDispenserPressure[i].n_data = DiagnosticsIndex; + DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i]; + } } -*/ + /**/ + DiagnosticsMonitor.n_dispenserslinearpositions = 0; + DiagnosticsMonitor.n_dispensersangularencoders = 0; DiagnosticsMonitor.n_dispenser1pressure = DiagnosticsIndex; DiagnosticsMonitor.dispenser1pressure = dispenserspressure[0]; @@ -447,21 +473,29 @@ void SendDiagnostics(void) } } */ - responseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); - responseContainer.continuous = true; - - uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); - size_t container_size = message_container__pack(&responseContainer, container_buffer); - free(responseContainer.data.data); - free(DiagnosticsMonitor.dispenserspressure); - free(DiagnosticsMonitor.dispensersmotorsfrequency); - - DiagnosticsReset(); + diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); + diagnosticsresponseContainer.continuous = true; - if (SendChars(container_buffer, container_size) == false) //comm tx mailbox full + diagnosticscontainer_buffer = 0; + diagnosticscontainer_buffer = malloc(message_container__get_packed_size(&diagnosticsresponseContainer)); + if (diagnosticscontainer_buffer) { - DiagnosticsStop(); + size_t container_size = message_container__pack(&diagnosticsresponseContainer, diagnosticscontainer_buffer); + //memmap(); + free(diagnosticsresponseContainer.data.data); + //free(DiagnosticsMonitor.dispenserspressure); + //free(DiagnosticsMonitor.dispensersmotorsfrequency); + if (SendChars(diagnosticscontainer_buffer, container_size) == false) //comm tx mailbox full + { + DiagnosticsStop(); + } } + else + { + LOG_ERROR(Task_self(),"malloc failed"); + } + DiagnosticsReset(); + } uint32_t DiagnosticsControlId = 0xff; uint32_t Diagnostics10MSControlId = 0xff; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 03cdea5e9..c40d018c3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -240,6 +240,10 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) } else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_ON)) //set temperature { + if (HeaterPIDConfig[HeaterId].m_SetParam < HeaterCmd[HeaterId].targettemperatue) //#bug 221 + { + PrepareHeater(HeaterId,Temperature); //prepare the heaters control info + } HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue; // if the heater is not on return (?). //set the target operation temperature diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c index 997d67973..22c8432b6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c @@ -46,20 +46,24 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer) StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT; - responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size); uint32_t Percentile[101] = {0}; - IdleTaskGetLoadTable(Percentile); response.n_percentile = 100; - response.percentile = Percentile; + response.percentile = malloc(sizeof(response.percentile)*response.n_percentile); + if (response.percentile) + IdleTaskGetLoadTable(response.percentile); + else + response.n_percentile = 0; //free(request); //------------------------------------------------------------------------------------------- + responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size); uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); free(responseContainer.data.data); SendChars((char*)container_buffer, container_size); - //free(container_buffer); - //free(requestContainer); + if (response.percentile) + free(response.percentile); + stub_real_time_usage_request__free_unpacked(request,NULL); } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c index 68b79edeb..6bd4e6f48 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c @@ -12,8 +12,6 @@ #include "Drivers/USB_Communication/USBCDCD.h" -//#include "drivers/twine_graphicslib/graphics_adapter.h" - #include "Stub_Status.h" void Stub_CartridgeReadRequest(MessageContainer* requestContainer) @@ -25,10 +23,6 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer) //request->cartridgeid - //writeLine("cartridge Request: "); - - //writeFloat(request->cartridgeid); - /* int i; for( i=0;i<8;i++) @@ -57,20 +51,8 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer) response.has_cartridgeused = false; status_response(status,&response.status, &response.statusword ,&response.has_statusword); -/* - writeLine("Sending Response: "); - writeFloat(response.cartridgeid); - writeString(", "); - writeFloat(response.cartridgecolor); - writeString(", "); - writeFloat(response.cartridgeversion); - writeString(", "); - writeFloat(response.cartridgedata); - writeString(", "); - writeFloat(response.cartridgeused); - writeString(", "); -*/ + Write_status_response(status); responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeReadResponse, requestContainer->token, true, &response, &stub_cartridge_read_response__pack, &stub_cartridge_read_response__get_packed_size); @@ -97,19 +79,8 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer) //request->cartridgeversion //request->cartridgedata //request->cartridgeused -/* - writeLine("Cartridge Request: "); - writeFloat(request->cartridgeid); - writeString(", "); - writeFloat(request->cartridgecolor); - writeString(", "); - writeFloat(request->cartridgeversion); - writeString(", "); - writeFloat(request->cartridgedata); - writeString(", "); - writeFloat(request->cartridgeused); -*/ + StubCartridgeWriteResponse response = STUB_CARTRIDGE_WRITE_RESPONSE__INIT; response.cartridgeid = request->cartridgeid; @@ -120,13 +91,7 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer) // response.statusword = OK; // response.has_statusword = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); -/* - writeLine("Sending Response: "); - writeFloat(response.cartridgeid); - writeString(", ");*/ -// writeFloat(response.statusword); -// WRITELINESTATUS; Write_status_response(status); responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeWriteResponse, requestContainer->token, true, &response, &stub_cartridge_write_response__pack, &stub_cartridge_write_response__get_packed_size); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 7b95c9c4d..79eacf9b3 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -303,12 +303,12 @@ void JobAbortFunc(MessageContainer* requestContainer) free(responseContainer.data.data); SendChars((char*)container_buffer, container_size); abort_job_request__free_unpacked(request,NULL); - //We keep the job request until it is done - if (CurrentJobRequest!= NULL) - job_request__free_unpacked(CurrentJobRequest,NULL); JobAbortedByUser = true; EndState(CurrentJob, "Job Aborted by user"); CurrentJob = NULL; + //We keep the job request until it is done + if (CurrentJobRequest!= NULL) + job_request__free_unpacked(CurrentJobRequest,NULL); CurrentJobRequest = NULL; diff --git a/Software/Stubs Collection/stubs/2Way_Valves_new.cs b/Software/Stubs Collection/stubs/2Way_Valves_new.cs new file mode 100644 index 000000000..22fa91ca1 --- /dev/null +++ b/Software/Stubs Collection/stubs/2Way_Valves_new.cs @@ -0,0 +1,102 @@ +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; + +const Int32 FPGA3 = 0x60000800; +const Int32 F3_VALVE_OUT = 0x0E2; + +/* + +7 8 +5 6 +3 4 +1 2 +FRONT + +*/ + +const Int32 MIDTANK2MANIF4_VALVE_2 = 1 << 0;//8 +const Int32 MIDTANK2MANIF4_VALVE_1 = 1 << 1;//4 +const Int32 MIDTANK2MANIF3_VALVE_2 = 1 << 2;//7 +const Int32 MIDTANK2MANIF3_VALVE_1 = 1 << 3;//3 +const Int32 MIDTANK2MANIF2_VALVE_2 = 1 << 4;//6 +const Int32 MIDTANK2MANIF2_VALVE_1 = 1 << 5;//2 +const Int32 MIDTANK2MANIF1_VALVE_2 = 1 << 6;//5 +const Int32 MIDTANK2MANIF1_VALVE_1 = 1 << 7;//1 + +const Int32 CART2MIDTANK4_VALVE_2 = 1 << 8 ;//8 +const Int32 CART2MIDTANK4_VALVE_1 = 1 << 9 ;//4 +const Int32 CART2MIDTANK3_VALVE_2 = 1 << 10;//7 +const Int32 CART2MIDTANK3_VALVE_1 = 1 << 11;//3 +const Int32 CART2MIDTANK2_VALVE_2 = 1 << 12;//6 +const Int32 CART2MIDTANK2_VALVE_1 = 1 << 13;//2 +const Int32 CART2MIDTANK1_VALVE_2 = 1 << 14;//5 +const Int32 CART2MIDTANK1_VALVE_1 = 1 << 15;//1 + + +public void OnExecute(StubManager stubManager) +{ + int MidTank_No = 0; + + var response = stubManager.ShowResponseWindow("Enter Midtank number to OPEN the 2Way valves (1-8), \nOr '0' to CLOSE all :", ""); + stubManager.Write("\n"); + MidTank_No = int.Parse(response); + + switch (MidTank_No) + { + case 1: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK1_VALVE_1); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF1_VALVE_1); + break; + case 2: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK2_VALVE_1); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF2_VALVE_1); + break; + case 3: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK3_VALVE_1); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF3_VALVE_1); + break; + case 4: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK4_VALVE_1); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF4_VALVE_1); + break; + case 5: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK1_VALVE_2); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF1_VALVE_2); + break; + case 6: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK2_VALVE_2); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF2_VALVE_2); + break; + case 7: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK3_VALVE_2); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF3_VALVE_2); + break; + case 8: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK4_VALVE_2); + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF4_VALVE_2); + break; + default: + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,FPGA3 + F3_VALVE_OUT, 0); // OFF + break; + } + + if(MidTank_No > 0 && MidTank_No < 9) + { + stubManager.Write("Open Valves #"); + stubManager.Write(MidTank_No); + stubManager.Write("\n"); + } + else + { + stubManager.WriteLine("Close all Valves !"); + } +} diff --git a/Software/Stubs Collection/stubs/Blower.cs b/Software/Stubs Collection/stubs/Blower.cs new file mode 100644 index 000000000..55ee6a943 --- /dev/null +++ b/Software/Stubs Collection/stubs/Blower.cs @@ -0,0 +1,37 @@ +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; + +//---------------------- +const Int32 I2C_ID = 2; +const Int32 I2C_Slave_Add = 0x98; +//---------------------- + +public void OnExecute(StubManager stubManager) +{ + + // --------------------- I2C write multibyte --------------------- + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x30);//AD5691R_CMD_WRITE_INPUT_N_UPDATE_REG + stubI2CWriteBytesRequest.BytesTWrite.Add(0xff);//0 (0V) - 0xFF (8V) + stubI2CWriteBytesRequest.BytesTWrite.Add(0x00);// + + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/I2C_scanner.c b/Software/Stubs Collection/stubs/I2C_scanner.c new file mode 100644 index 000000000..f7e87506c --- /dev/null +++ b/Software/Stubs Collection/stubs/I2C_scanner.c @@ -0,0 +1,38 @@ +// I2C scanner by Nick Gammon. Thanks Nick. + +#include <Wire.h> + +void setup() { + Serial.begin (115200); //*********** make sure serial monitor baud matches ********** + + // Leonardo: wait for serial port to connect + while (!Serial) + { + } + + Serial.println (); + Serial.println ("I2C scanner. Scanning ..."); + byte count = 0; + + Wire.begin(); + for (byte i = 1; i < 120; i++) + { + Wire.beginTransmission (i); + if (Wire.endTransmission () == 0) + { + Serial.print ("Found address: "); + Serial.print (i, DEC); + Serial.print (" (0x"); + Serial.print (i, HEX); + Serial.println (")"); + count++; + delay (1); // maybe unneeded? + } // end of good response + } // end of for loop + Serial.println ("Done."); + Serial.print ("Found "); + Serial.print (count, DEC); + Serial.println (" device(s)."); +} // end of setup + +void loop() {} diff --git a/Software/Stubs Collection/stubs/Midtank_Valves.cs b/Software/Stubs Collection/stubs/Midtank_Valves.cs new file mode 100644 index 000000000..f99d08d88 --- /dev/null +++ b/Software/Stubs Collection/stubs/Midtank_Valves.cs @@ -0,0 +1,74 @@ +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; + +include "..\..\Defines\Tango_Defines_Basic.cs" +include "..\Defines\Tango_Defines_GPO.cs" +//include "C:\To_Backup\Mulberry\Mulberry_current\Customers\Twine\Tango\LAB_Tests\Main_PCB\ATP_Test\Scripts\Defines\Tango_Defines_Basic.cs" +//include "C:\To_Backup\Mulberry\Mulberry_current\Customers\Twine\Tango\LAB_Tests\Main_PCB\ATP_Test\Scripts\Defines\Tango_Defines_GPO.cs" + + +public void OnExecute(StubManager stubManager) +{ + int midtankno = 0; + + var response = stubManager.ShowResponseWindow("Enter Midtank number to test (1-8):", ""); + //stubManager.WriteLine(response); + stubManager.Write("\n"); + midtankno = int.Parse(response); + +switch (midtankno) + { + case 1: + midtankno=1; + break; + case 2: + midtankno=3; + break; + case 3: + midtankno=5; + break; + case 4: + midtankno=7; + break; + case 5: + midtankno=2; + break; + case 6: + midtankno=4; + break; + case 7: + midtankno=6; + break; + case 8: + midtankno=8; + break; + + } + + + + SetBit (FPGA3, F3_VALVE_OUT,8- midtankno, 1); + stubManager.Write("\n\nSetting GPO F3_VALVE_OUT, bit "); stubManager.Write(8-midtankno); stubManager.Write(", "); stubManager.Write(F3_VALVE_Bits[8-midtankno]); + Thread.Sleep(1000); + SetBit (FPGA3, F3_VALVE_OUT,8- midtankno, 0); + stubManager.Write("\nClearing GPO F3_VALVE_OUT, bit "); stubManager.Write(8-midtankno); stubManager.Write(", "); stubManager.Write(F3_VALVE_Bits[8-midtankno]); + Thread.Sleep(1000); + + SetBit (FPGA3, F3_VALVE_OUT, 16-midtankno, 1); + stubManager.Write("\n\nSetting GPO F3_VALVE_OUT, bit "); stubManager.Write(16-midtankno); stubManager.Write(", "); stubManager.Write(F3_VALVE_Bits[16-midtankno]); + Thread.Sleep(1000); + SetBit (FPGA3, F3_VALVE_OUT, 16-midtankno, 0); + stubManager.Write("\nClearing GPO F3_VALVE_OUT, bit "); stubManager.Write(16-midtankno); stubManager.Write(", "); stubManager.Write(F3_VALVE_Bits[16-midtankno]); + Thread.Sleep(1000); + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/New Text Document (2).txt b/Software/Stubs Collection/stubs/New Text Document (2).txt deleted file mode 100644 index e69de29bb..000000000 --- a/Software/Stubs Collection/stubs/New Text Document (2).txt +++ /dev/null diff --git a/Software/Stubs Collection/stubs/New Text Document.txt b/Software/Stubs Collection/stubs/New Text Document.txt deleted file mode 100644 index e69de29bb..000000000 --- a/Software/Stubs Collection/stubs/New Text Document.txt +++ /dev/null diff --git a/Software/Stubs Collection/stubs/SSR4_control.cs b/Software/Stubs Collection/stubs/SSR4_control.cs new file mode 100644 index 000000000..049fb3dff --- /dev/null +++ b/Software/Stubs Collection/stubs/SSR4_control.cs @@ -0,0 +1,20 @@ +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; + +const Int32 SSR_REG = 0x80; + +public void OnExecute(StubManager stubManager) +{ + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000400 | 0x0E2, SSR_REG); // turn ON SSR4 + + //stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000400 | 0x0E2, 0x0000); // turn OFF SSR_REG +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/calculate - Copy.cs b/Software/Stubs Collection/stubs/calculate - Copy.cs deleted file mode 100644 index 22a83dd2d..000000000 --- a/Software/Stubs Collection/stubs/calculate - Copy.cs +++ /dev/null @@ -1,22 +0,0 @@ -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.Stubs.UI; - -public void OnExecute(StubManager stubManager) -{ - for (int i = 0; i < 10; i++) - { - // Double : A - // Double : B - stubManager.Run("calculate", 10, 5); - Thread.Sleep(10); - } -} - diff --git a/Software/Stubs Collection/stubs/read real time.cs b/Software/Stubs Collection/stubs/read real time.cs new file mode 100644 index 000000000..51d0b570a --- /dev/null +++ b/Software/Stubs Collection/stubs/read real time.cs @@ -0,0 +1,30 @@ +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) +{ + //for (int i = 0; i < 10; i++) + { + var response = stubManager.Run<StubRealTimeUsageResponse>("StubRealTimeUsageRequest"); + for (int i = 0; i < 100; i++) + { + if (response.Percentile[i]>0) + { + stubManager.Write("\r\n "); + stubManager.Write( i); + stubManager.Write(" "); + stubManager.Write(response.Percentile[i]); + } + } + + } +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/stubs.zip b/Software/Stubs Collection/stubs/stubs.zip Binary files differdeleted file mode 100644 index 9b8a98765..000000000 --- a/Software/Stubs Collection/stubs/stubs.zip +++ /dev/null diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj index 2ac516903..bc49f6331 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj @@ -575,7 +575,7 @@ copy /Y "$(SolutionDir)Referenced Assemblies\Microsoft.WITDataStore32.dll" "$(Ta </Target> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_UpdateFileVersion="True" BuildVersion_DetectChanges="True" BuildVersion_UseGlobalSettings="False" /> + <UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs index c5831f701..b0279957c 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs @@ -294,6 +294,9 @@ namespace Tango.MachineStudio.UI.ViewModels } } + //Copy new updater utility to app path. + File.Copy(Path.Combine(_newPackageTempFolder, "Tango.MachineStudio.Updater.exe"), Path.Combine(_appPath, "Tango.MachineStudio.Updater.exe"), true); + TangoIOC.Default.GetInstance<MainViewVM>().DisableCheckForUpdates = true; Status = UpdateStatus.UpdateCompleted; } |
