aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-06-13 15:17:43 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-06-13 15:17:43 +0300
commit9d4d0c084e084273ae62fd09863142aa2f6ef53d (patch)
treee2b968a3dbaa8e363066803cb8aa5e528bb83f06 /Software/Embedded_SW/Embedded/Modules
parentf502659ef54f1f798952089989923d1e76ab06cb (diff)
parent0d5c2e03b1f0e06cd307eaa2d5b7eaab894126d5 (diff)
downloadTango-9d4d0c084e084273ae62fd09863142aa2f6ef53d.tar.gz
Tango-9d4d0c084e084273ae62fd09863142aa2f6ef53d.zip
merge - all thread module related, used my code
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c41
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c148
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h2
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);