diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-06-13 15:17:43 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-06-13 15:17:43 +0300 |
| commit | 9d4d0c084e084273ae62fd09863142aa2f6ef53d (patch) | |
| tree | e2b968a3dbaa8e363066803cb8aa5e528bb83f06 /Software/Embedded_SW/Embedded/Modules | |
| parent | f502659ef54f1f798952089989923d1e76ab06cb (diff) | |
| parent | 0d5c2e03b1f0e06cd307eaa2d5b7eaab894126d5 (diff) | |
| download | Tango-9d4d0c084e084273ae62fd09863142aa2f6ef53d.tar.gz Tango-9d4d0c084e084273ae62fd09863142aa2f6ef53d.zip | |
merge - all thread module related, used my code
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
9 files changed, 181 insertions, 36 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 5ec7c6b16..9dc03601c 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -26,6 +26,7 @@ Task_Handle AlarmHandling_Task_Handle; Mailbox_Handle AlarmHandlingMsgQ = NULL; +static GateMutex_Handle gateAlarmHandlingDB; /******************** Functions ********************************************/ //uint32_t Control_Delta_Position_Pass(uint32_t Current_Read,uint32_t Previous_Read); @@ -56,6 +57,13 @@ void AlarmHandlingInit(void) //memset(AlarmHandlingDatalog,0,sizeof(uint32_t)*MAX_TANGO_CONTROL_DEVICES); + /*gateAlarmHandlingDB = GateMutex_create(NULL, &eb); + if (gateAlarmHandlingDB == NULL) + { + System_abort("Could not create USB Wait gate"); + }*/ + + return; } void AlarmHandlingIterate(UArg arg0) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a1de29b08..847b777fa 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -31,6 +31,7 @@ #include "drivers/FPGA/FPGA.h" #include "modules/thread/thread_ex.h" +#include "Drivers/Peripheral_GPIO/GPIO.h" Task_Handle Millisecond_Task_Handle; /******************** Definitions ********************************************/ @@ -236,7 +237,6 @@ uint32_t MillisecLoop(uint32_t tick) FPGA_Read_limit_Switches_Registers(); //Read_FPGA_GPI_Rgisters();//FPGA_Read_limit_Switches(); #endif - temp += MotorActivity; if (MotorActivity) { @@ -340,6 +340,7 @@ uint32_t MillisecLoop(uint32_t tick) { for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) MillisecReadFromTempSensor(Sensor_i, NULL); + ACTIVITY_RED_LED_CHANGE_MODE; } if (Onesecond_Tick) diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 69ff06880..ff9acdb94 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -486,7 +486,7 @@ uint32_t HeatersControlLoop(uint32_t tick) { //char str[100]; //uint8_t len = 0; - int DcHeaterId; + int DcHeaterId,HeaterSliceCounter; /*len = usnprintf(str, 100, "\r\n EightMilliSecondHeatersInterrupt SliceCounter %d Owner %d H1000 %d H2000 %d" ,SliceCounter,TimeSliceAllocation[SliceCounter],HeatersRestart,NumberOFSlicesInUse); Report(str, __FILE__,__LINE__,0, RpMessage, SliceCounter, TimeSliceAllocation[SliceCounter]); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index abd9794b8..6739619a7 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -35,7 +35,6 @@ double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0}; HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { HARDWARE_PID_CONTROL_TYPE__Dispenser1,HARDWARE_PID_CONTROL_TYPE__Dispenser2,HARDWARE_PID_CONTROL_TYPE__Dispenser3,HARDWARE_PID_CONTROL_TYPE__Dispenser4,HARDWARE_PID_CONTROL_TYPE__Dispenser5,HARDWARE_PID_CONTROL_TYPE__Dispenser6,HARDWARE_PID_CONTROL_TYPE__Dispenser7,HARDWARE_PID_CONTROL_TYPE__Dispenser8}; -bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; /******************** STRUCTURES AND ENUMs ********************************************/ /******************** GLOBAL PARAMETERS ********************************************/ @@ -84,7 +83,7 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) //callback - calls printing stm with the result // registration - 10 msec, dispenser pressure sensor -// AddControlCallback(DeviceId2Dispenser[DispenserId], DispenserControlCBFunction, eHundredMillisecond); +// AddControlCallback(DeviceId2Heater[HeaterId], HeaterControlCBFunction, eHundredMillisecond); // start the dispenser pressure building - move up in a TBD speed, valve closed //Dispenser Speed control //callback - handles speed @@ -95,7 +94,7 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) //******************************************************************************************************************** uint32_t IDSPrepareState(void *JobDetails) { - int Motor_i, HW_Motor_Id, Pid_Id,i; + int Motor_i, HW_Motor_Id, Pid_Id; //start IDS control for all motors for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) { @@ -118,11 +117,6 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); //set the dispenser to the #warning activate valve - /*Start the dispensers to build initial pressure - * check different handling for dispensers that participate in the first segment and idle dispensers - * start control for initial pressure - * - */ //ValveCommand (Enable,MixerDirection); #ifdef DEBUG_TEST_FUNCTIONS // add control here @@ -130,33 +124,16 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) #endif } //set 3 dancers to the profile positions - for (i = 0; i < MAX_SYSTEM_DISPENSERS; i++) - { - DispenserReady[i] = true; - } return OK; } - void DispenserPrepareReady(void) - { - int i; - for (i=0;i<MAX_SYSTEM_DISPENSERS;i++) - { - if (DispenserReady[i] == false) - { - return; //not all configured Dispensers are ready - } - } - PrepareReady(Module_IDS,ModuleDone); - } //******************************************************************************************************************** uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) { //set the speed only before the first segment, speed is constant accros job JobTicket* JobTicket = JobDetails; - int Dispenser_i; - TimerMotors_t HW_Motor_Id; + int Dispenser_i, HW_Motor_Id; int segmentfirst_speed; int CurrentSegment = 0; JobBrushStopId = 0; @@ -171,12 +148,12 @@ int CurrentSegment = 0; OriginalDispenserSpd_2PPS[Dispenser_i] = (int)Dispenser_speed; } //ControlStart(); + // set the new speed in the dryer Dispenser to the speed of the new segment MotorSetSpeed(HW_Motor_Id, OriginalDispenserSpd_2PPS[HW_Motor_Id]); // activate control fr all motors - /* wait for all dispensers to get to the required pressure - * move the presegment ready when all dispensers are ready. - */ + //set speed for both rocker motors + //wait for all motors to get to the required speed (set the target speed for the control to check) //call the job state machine when the thread system is ready PreSegmentReady(Module_IDS,ModuleDone); @@ -193,10 +170,12 @@ int CurrentSegment = 0; uint32_t IDSEndState(void *JobDetails) { int Motor_i; - for ( Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) + for ( Motor_i = 0;Motor_i < MAX_THREAD_MOTORS_NUM;Motor_i++) { - StopMotor(DispenserIdToMotorId[Motor_i],Hard_Hiz); + StopMotor(ThreadMotorIdToMotorId[Motor_i],Hard_Hiz); } + StopMotor(HARDWARE_MOTOR_TYPE__MOTO_RLOADING,Hard_Hiz); + StopMotor(HARDWARE_MOTOR_TYPE__MOTO_LLOADING,Hard_Hiz); return OK; } 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 49c7d0d3b..669df84a5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c @@ -16,6 +16,8 @@ #include "Stub_Status.h" +#include "drivers/Motors/Motor.h" + void Stub_CartridgeReadRequest(MessageContainer* requestContainer) { uint32_t status = NOT_SUPPORTED; @@ -23,7 +25,12 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer) StubCartridgeReadRequest* request = stub_cartridge_read_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - //request->cartridgeid + MillisecStart(); + ControlStart(); + + //MotorMovetoLimitSwitch (14,1, 1000, 32, MotorSetSpeedCallBackFunction); + MotorSetSpeed( 15, 1000); + //request->cartridgeid writeLine("cartridge Request: "); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c index 11030f9c6..9584ee39b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c @@ -4,6 +4,13 @@ #include <PMR/Common/MessageContainer.pb-c.h> #include <PMR/Stubs/StubI2CRequest.pb-c.h> #include <PMR/Stubs/StubI2CResponse.pb-c.h> + +#include <PMR/Stubs/StubI2CWriteBytesRequest.pb-c.h> +#include <PMR/Stubs/StubI2CWriteBytesResponse.pb-c.h> + +#include <PMR/Stubs/StubI2CReadBytesRequest.pb-c.h> +#include <PMR/Stubs/StubI2CReadBytesResponse.pb-c.h> + #include <stdbool.h> #include <stdlib.h> #include <stdio.h> @@ -23,6 +30,7 @@ void Stub_I2CRequest(MessageContainer* requestContainer) { + uint32_t status = PASSED; MessageContainer responseContainer; @@ -35,7 +43,24 @@ void Stub_I2CRequest(MessageContainer* requestContainer) response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite ); response.has_readbyte= true; +/* + //-------------------------- + + response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]); + response.has_readbyte= true; + uint32_t I2C_W_buf[256] = {0},i; + + for(i = 0; i < request->n_bytestwrite;i++) + { + I2C_W_buf[i] = request->bytestwrite[i]; + } + + response.readbytes = I2C_W_buf; + response.n_readbytes = request->n_bytestwrite; + + //------------------------------- +*/ status_response(status,&response.status, &response.statusword ,&response.has_statusword); writeLine("Sending Response: "); @@ -52,4 +77,127 @@ void Stub_I2CRequest(MessageContainer* requestContainer) SendChars((char*)container_buffer, container_size); stub_i2_crequest__free_unpacked(request,NULL); + } + + +void Stub_I2CWriteBytesRequest(MessageContainer* requestContainer) +{ + + uint32_t status = PASSED; + MessageContainer responseContainer; + + StubI2CWriteBytesRequest* request = stub_i2_cwrite_bytes_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + StubI2CWriteBytesResponse response = STUB_I2_CWRITE_BYTES_RESPONSE__INIT; + + response.i2cid = request->i2cid; + response.has_i2cid = true; + response.slaveaddress = request->slaveaddress; + response.has_slaveaddress = true; + + //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite ); + //response.has_readbyte= true; + + //-------------------------- + + //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]); + //response.has_readbyte= true; + + uint8_t I2C_W_buf[256] = {0},i; + + for(i = 0; i < request->n_bytestwrite;i++) + { + I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff); + } + + //response.readbytes = I2C_W_buf; + //response.n_readbytes = request->n_bytestwrite; + + //------------------------------- + + + //---------------------- + + status = I2C_Write(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite); + + //-------------------------- + + status_response(status,&response.status, &response.statusword ,&response.has_statusword); + + writeLine("Sending Response: "); +// + + Write_status_response(status); + + responseContainer = createContainer(MESSAGE_TYPE__StubI2CWriteBytesResponse, requestContainer->token, true, &response, &stub_i2_cwrite_bytes_response__pack, &stub_i2_cwrite_bytes_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); + + stub_i2_cwrite_bytes_request__free_unpacked(request,NULL); + +} + +void Stub_I2CReadBytesRequest(MessageContainer* requestContainer) +{ + uint8_t I2C_R_buf[256] = {0},i; + uint32_t I2C_R32_buf[256] = {0}; + + uint32_t status = PASSED; + MessageContainer responseContainer; + + StubI2CReadBytesRequest* request = stub_i2_cread_bytes_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + StubI2CReadBytesResponse response = STUB_I2_CREAD_BYTES_RESPONSE__INIT; + + response.i2cid = request->i2cid; + response.has_i2cid = true; + response.slaveaddress = request->slaveaddress; + response.has_slaveaddress = true; + + status = I2C_Read(request->i2cid, request->slaveaddress, I2C_R_buf, request->numberofbytestoread); + + //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite ); + //response.has_readbyte= true; + + //-------------------------- + + //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]); + //response.has_readbyte= true; + + //uint32_t I2C_W_buf[256] = {0},i; + + for(i = 0; i < request->numberofbytestoread;i++) + { + I2C_R32_buf[i]= (uint32_t)I2C_R_buf[i] ; + } + + response.readbytes = I2C_R32_buf; + response.n_readbytes = request->numberofbytestoread; + + //------------------------------- + + status_response(status,&response.status, &response.statusword ,&response.has_statusword); + + writeLine("Sending Response: "); +// + + Write_status_response(status); + + responseContainer = createContainer(MESSAGE_TYPE__StubI2CReadBytesResponse, requestContainer->token, true, &response, &stub_i2_cread_bytes_response__pack, &stub_i2_cread_bytes_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); + + stub_i2_cread_bytes_request__free_unpacked(request,NULL); +} + + + diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.h index b2d6e0dbc..e91a5fd09 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.h +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.h @@ -2,5 +2,7 @@ #define STUB_MOTORENCODER_H void Stub_I2CRequest(MessageContainer* requestContainer); +void Stub_I2CReadBytesRequest(MessageContainer* requestContainer); +void Stub_I2CWriteBytesRequest(MessageContainer* requestContainer); #endif //STUB_STUB_MOTORENCODER_H diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c index d27036523..01c91c72b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c @@ -43,7 +43,7 @@ #include "driverlib/ssi.h" #include "drivers/SPI/SPI_Comm.h" #include "Modules/Thread/Thread_ex.h" -#include "drivers/Motors/Motor.h" + #include "Modules/thread/thread.h" #include "Drivers/Motors/Motor.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 8e8ea60e0..b7401c77f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -22,7 +22,7 @@ uint32_t ThreadInitialTestStub(); //uint32_t MotorPidRequestMessage(HardwarePidControl* request); uint32_t Winder_Init(void); -uint32_t Winder_Prepare(void *JobDetails); +uint32_t Winder_Prepare(void); uint32_t Winder_Presegment(void *JobDetails); uint32_t Winder_End(void); |
