diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-04-22 13:58:32 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-04-22 13:58:32 +0300 |
| commit | 540272c93c7d0b4a12ea797c996f2c9ddf2a5bbb (patch) | |
| tree | c77ea96deed628c118bb235bc16150846c165d49 /Software/Embedded_SW/Embedded/Modules/Control | |
| parent | 4df1724226c0d0941b970dbe71b1476e3c3e9902 (diff) | |
| download | Tango-540272c93c7d0b4a12ea797c996f2c9ddf2a5bbb.tar.gz Tango-540272c93c7d0b4a12ea797c996f2c9ddf2a5bbb.zip | |
1. IfIndex in control interface 2. container.c moved to communication
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
4 files changed, 26 insertions, 10 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c b/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c index 1de8ac0de..881034e40 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c @@ -26,7 +26,7 @@ uint32_t DriverActionWithCallback (uint32_t deviceId, uint32_t parameter, callba ModuleCallback = callback; //start control: - uint32_t ControlId = AddControlCallback( callback, eOneMillisecond, NULL, deviceId, parameter ); + uint32_t ControlId = AddControlCallback( callback, eOneMillisecond, NULL, (IfTypeNone*0x100+deviceId),deviceId, parameter ); return ControlId; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index fde3a36b3..286ed7ca0 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -22,4 +22,8 @@ uint32_t getMotorSpeedData(int MotorId); uint32_t getTemperatureSensorData(int SensorId); uint32_t getADCData(int DeviceId); +void MillisecInit(void); +void MillisecStop(void); +void MillisecStart(void); + #endif /* MODULES_CONTROL_MILLISECTASK_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index 28b4afb8d..0a4a8b791 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -65,6 +65,7 @@ typedef struct bool ControlActive; uint32_t Parameter1; uint32_t Parameter2; + uint32_t IfIndex; DataReadCBFunction ControlDataReadPtr; ControlCBFunction ControlCallbackPtr; CTRL_TIMING_ENUM ControlTiming; @@ -169,7 +170,7 @@ void ControlStart(void) * both these callbacks can be removed. if a new call is arriving, it invalidates the previous one (no dual control or data) * ***************************************************************************************************************************************************/ -uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint32_t Parameter1, uint32_t Parameter2 ) +uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint32_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 ) { assert(Callback); assert(DriverfPtr); @@ -194,6 +195,7 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF ControlArray[deviceId].ControlDataReadPtr = DriverfPtr; ControlArray[deviceId].Parameter1 = Parameter1; ControlArray[deviceId].Parameter2 = Parameter2; + ControlArray[deviceId].IfIndex = IfIndex; GateMutex_leave(gateControlDB, key); return deviceId; @@ -223,7 +225,6 @@ int RemoveControlCallback(uint32_t deviceId , ControlCBFunction Callback) void OneMilliSecondControlInterrupt(UArg arg0) { ControlMessageStruc Message; - bool retcode = false; ROM_IntMasterDisable(); if (ControlRestart == true) { @@ -237,7 +238,7 @@ void OneMilliSecondControlInterrupt(UArg arg0) Message.tick = UsersysTickGet(); Message.msglen = sizeof(ControlMessageStruc); if (ControlMsgQ != NULL) - retcode = Mailbox_post(ControlMsgQ , &Message, BIOS_NO_WAIT); + Mailbox_post(ControlMsgQ , &Message, BIOS_NO_WAIT); ROM_TimerIntClear(Control_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt // @@ -266,27 +267,27 @@ uint32_t ControlLoop(uint32_t tick) { case eOneMillisecond: ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); - ControlArray[Device_i].ControlCallbackPtr(Device_i, ControlDatalog[Device_i]); + ControlArray[Device_i].ControlCallbackPtr(ControlArray[Device_i].IfIndex, ControlDatalog[Device_i]); break; case eTenMilliSecond: if (Ten_msTick) { ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); - ControlArray[Device_i].ControlCallbackPtr(Device_i, ControlDatalog[Device_i]); + ControlArray[Device_i].ControlCallbackPtr(ControlArray[Device_i].IfIndex, ControlDatalog[Device_i]); } break; case eHunderdMillisecond: if (Hundred_msTick) { ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); - ControlArray[Device_i].ControlCallbackPtr(Device_i, ControlDatalog[Device_i]); + ControlArray[Device_i].ControlCallbackPtr(ControlArray[Device_i].IfIndex, ControlDatalog[Device_i]); } break; case eOneSecond: if (Onesecond_Tick) { ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); - ControlArray[Device_i].ControlCallbackPtr(Device_i, ControlDatalog[Device_i]); + ControlArray[Device_i].ControlCallbackPtr(ControlArray[Device_i].IfIndex, ControlDatalog[Device_i]); } break; default: diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h index 23bd13231..9322f562e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h @@ -11,7 +11,7 @@ #include "include.h" //typedef uint32_t (* DeviceDataFunction)(uint32_t deviceID, uint32_t *Value); -typedef uint32_t (* ControlCBFunction)(uint32_t deviceID, uint32_t ReadValue); +typedef uint32_t (* ControlCBFunction)(uint32_t IfIndex, uint32_t ReadValue); typedef uint32_t (* DataReadCBFunction)( uint32_t Parameter1, uint32_t Parameter2); typedef enum { eNoControl = 0, @@ -20,12 +20,23 @@ typedef enum { eHunderdMillisecond = 100, eOneSecond = 1000 }CTRL_TIMING_ENUM; +typedef enum +{ + IfTypeNone, + IfTypeThread, + IfTypeWinder, + IfTypeIDS, + IfTypeHeaters, + IfTypeWaste, + IfTypeMotors, + MAX_INTERFACE_TYPES +}SYSTEM_INTERFACE_TYPES_ID_ENUM; void ControlInit(void); void ControlStop(void); void ControlStart(void); -uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint32_t Parameter1, uint32_t Parameter2 ); +uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint32_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 ); int RemoveControlCallback(uint32_t deviceId, ControlCBFunction Callback ); uint32_t TemplateDataReadCBFunction (uint32_t deviceId, uint32_t Parameter1, uint32_t Parameter2); |
