00001
00002
00003
00004
00005
00006
00007
00008 #ifndef MioComm_h
00009 #define MioComm_h
00010
00011
00012
00014 typedef enum
00015 {
00016 Mio_Port_P1 = 0,
00017 Mio_Port_P2,
00018 Mio_Port_P3,
00019 Mio_Port_P4,
00020 Mio_Port_P5,
00021 Mio_Port_P6,
00022 Mio_Port_P7,
00023 Mio_Port_P8,
00024 Mio_Port_P9,
00025 Mio_Port_P10,
00026 Mio_Port_P11,
00027 Mio_Port_P12,
00028 Mio_Port_P13,
00029 Mio_Port_P14,
00030 Mio_Port_P15,
00031 Mio_Port_P16,
00032 Mio_Port_P17,
00033 Mio_Port_P18,
00034 Mio_Port_P19,
00035 Mio_Port_P20,
00036 Mio_Port_P21,
00037 Mio_Port_P22,
00038 Mio_Port_P23,
00039 Mio_Port_P24,
00040 Mio_Port_P25,
00041 Mio_Port_P26,
00042 Mio_Port_P27,
00043 Mio_Port_P28,
00044 Mio_Port_P29,
00045 Mio_Port_P30,
00046 Mio_Port_P31,
00047 Mio_Port_P32,
00048 Mio_Port_P33,
00049 Mio_Port_P34,
00050 Mio_Port_P35,
00051 Mio_Port_P36,
00052 Mio_Port_P37,
00053 Mio_Port_P38,
00054 Mio_Port_P39,
00055 Mio_Port_P40,
00056
00057 Mio_Port_NumOfItems,
00058 Mio_Port_First = Mio_Port_P1,
00059 Mio_Port_Last = Mio_Port_P40,
00060
00061 Mio_Port_Inv = Mio_Port_NumOfItems
00062
00063 } Mio_Port;
00064
00066 #define Mio_PortIsValid(mio_port) ((unsigned)(mio_port) <= Mio_Port_Last)
00067
00069 #define Mio_PortIsInvalid(mio_port) ((unsigned)(mio_port) > Mio_Port_Last)
00070
00071
00073 typedef enum
00074 {
00075 Mio_PortMode_DigIn = 0,
00077
00078 Mio_PortMode_DigInOut,
00081
00082 Mio_PortMode_Vref,
00084
00085 Mio_PortMode_AnaIn,
00087
00088
00089 Mio_PortMode_NumOfItems,
00090 Mio_PortMode_First = Mio_PortMode_DigIn,
00091 Mio_PortMode_Last = Mio_PortMode_NumOfItems - 1
00092
00093 } Mio_PortMode;
00094
00096 #define Mio_PortModeIsValid(mio_port_mode) ((unsigned)(mio_port_mode) <= Mio_PortMode_Last)
00097
00099 #define Mio_PortModeIsInvalid(mio_port_mode) ((unsigned)(mio_port_mode) > Mio_PortMode_Last)
00100
00101
00103 typedef enum
00104 {
00105 Mio_PortDigInOut_In = 0,
00106 Mio_PortDigInOut_Out0,
00107 Mio_PortDigInOut_Out1,
00108
00109 } Mio_PortDigInOut;
00110
00111
00113 typedef enum
00114 {
00115 Mio_TaskType_DS18x20 = 0,
00116
00117
00118 Mio_TaskType_NumOfItems,
00119 Mio_TaskType_First = Mio_TaskType_DS18x20,
00120 Mio_TaskType_Last = Mio_TaskType_NumOfItems - 1,
00121
00122 Mio_TaskType_Inv = Mio_TaskType_NumOfItems
00123
00124 } Mio_TaskType;
00125
00127 #define Mio_TaskTypeIsValid(mio_task_type) ((unsigned)(mio_task_type) <= Mio_TaskType_Last)
00128
00130 #define Mio_TaskTypeIsInvalid(mio_task_type) ((unsigned)(mio_task_type) > Mio_TaskType_Last)
00131
00132
00134 #define Mio_TaskMaxTaskId 8
00135
00137 #define Mio_TaskIdIsValid(mio_task_id) ((unsigned)(mio_task_id) <= Mio_TaskMaxTaskId)
00138
00140 #define Mio_TaskIdIsInvalid(mio_task_id) ((unsigned)(mio_task_id) > Mio_TaskMaxTaskId)
00141
00142
00144 typedef enum
00145 {
00146 Mio_DS18x20Type_Auto = 0,
00147
00148 Mio_DS18x20Type_S,
00149 Mio_DS18x20Type_B,
00150
00151 } Mio_DS18x20Type;
00152
00153
00155 typedef enum
00156 {
00157 Mio_DS18x20Error_None = 0,
00158 Mio_DS18x20Error_NotPresent,
00159 Mio_DS18x20Error_Error,
00160 Mio_DS18x20Error_StartFail,
00161 Mio_DS18x20Error_BadCrc,
00162
00163 } Mio_DS18x20Error;
00164
00165
00167 typedef enum
00168 {
00169 Mio_PWMMode_None = 0,
00170 Mio_PWMMode_Out,
00171 Mio_PWMMode_In,
00172
00173 } Mio_PWMMode;
00174
00175
00177 typedef enum
00178 {
00179 Mio_PWMClockSpeed_20MHz = 0,
00180 Mio_PWMClockSpeed_10MHz = 1,
00181 Mio_PWMClockSpeed_5MHz = 2,
00182 Mio_PWMClockSpeed_2500kHz = 3,
00183 Mio_PWMClockSpeed_625kHz = 4
00184
00185 } Mio_PWMClockSpeed;
00186
00187
00188
00189
00190 #define Mio_PWM_DISABLE 0
00191 #define Mio_PWM_ENABLE 0x01
00192
00193 #define Mio_PWM_POL_0 0
00194 #define Mio_PWM_POL_1 0x02
00195
00196 #define Mio_PWM_IDLE 0
00197 #define Mio_PWM_ACTIVE 0x04
00198
00199
00201 typedef enum
00202 {
00203 Mio_PWMInMode_Idle = 0,
00204 Mio_PWMInMode_Active,
00205 Mio_PWMInMode_ActivateIfIdle
00206
00207 } Mio_PWMInMode;
00208
00209
00211 typedef enum
00212 {
00213
00214 Mio_Rc_OK = 0,
00215
00216
00217 Mio_Rc_OS_DeviceNotOpen,
00218 Mio_Rc_OS_DeviceBusy,
00219 Mio_Rc_OS_DeviceWriteError,
00220 Mio_Rc_OS_DeviceReadError,
00221 Mio_Rc_OS_DeviceReadTimeout,
00222
00223
00224 Mio_Rc_API_BadInputParam,
00225 Mio_Rc_API_NullInputParam,
00226 Mio_Rc_API_BadPort,
00227 Mio_Rc_API_BadMode,
00228 Mio_Rc_API_MessageCorrupt,
00229 Mio_Rc_API_MessageCrc,
00230 Mio_Rc_API_MessageSyntax,
00231 Mio_Rc_API_WrongMessage,
00232
00233
00234 Mio_Rc_MIO_UartOvr,
00235 Mio_Rc_MIO_UartOer,
00236 Mio_Rc_MIO_UartFer,
00237 Mio_Rc_MIO_UartPer,
00238 Mio_Rc_MIO_MessageTimeout,
00239 Mio_Rc_MIO_MessageCorrupt,
00240 Mio_Rc_MIO_MessageCrc,
00241 Mio_Rc_MIO_MessageSyntax,
00242 Mio_Rc_MIO_BadPort,
00243 Mio_Rc_MIO_BadPortOrMode,
00244 Mio_Rc_MIO_WrongMode,
00245 Mio_Rc_MIO_BadTaskId,
00246 Mio_Rc_MIO_BadTaskType,
00247 Mio_Rc_MIO_WrongTaskType,
00248 Mio_Rc_MIO_BadTaskConfig,
00249 Mio_Rc_MIO_TaskNotActive,
00250
00251
00252 Mio_Rc_NumOfItems,
00253 Mio_Rc_First = Mio_Rc_OK,
00254 Mio_Rc_Last = Mio_Rc_NumOfItems - 1
00255
00256 } Mio_Rc;
00257
00259 #define Mio_RcIsValid(code) ((unsigned)(code) <= Mio_Rc_Last)
00260
00262 #define Mio_RcIsInvalid(code) ((unsigned)(code) > Mio_Rc_Last)
00263
00264
00266 #define Mio_MessageMaxPayloadSize 28
00267
00268
00269
00270
00271
00272
00273
00274
00277 #define Mio_CommunicationSpeed 125000
00278
00279
00282 typedef enum
00283 {
00284 Mio_HostMsgId_Reset = 0,
00285 Mio_HostMsgId_Loopback,
00286 Mio_HostMsgId_SetMioPortsModes,
00287 Mio_HostMsgId_GetMioPortsModes,
00288 Mio_HostMsgId_GetDigPortValue,
00289 Mio_HostMsgId_SetDigPortValue,
00290 Mio_HostMsgId_SetDigPortsValues,
00291 Mio_HostMsgId_GetDigPortsValues,
00292 Mio_HostMsgId_GetAnaPortsValues,
00293 Mio_HostMsgId_StartTask,
00294 Mio_HostMsgId_StopTask,
00295 Mio_HostMsgId_GetDS18x20TaskTemp,
00296 Mio_HostMsgId_StartPWMOut,
00297 Mio_HostMsgId_AdjustPWMOut,
00298 Mio_HostMsgId_StartPWMIn,
00299 Mio_HostMsgId_SetPWMInMode,
00300 Mio_HostMsgId_GetPWMInResult,
00301 Mio_HostMsgId_StopPWM,
00302
00303
00304 Mio_HostMsgId_NumOfItems,
00305 Mio_HostMsgId_First = Mio_HostMsgId_Loopback,
00306 Mio_HostMsgId_Last = Mio_HostMsgId_NumOfItems - 1
00307
00308 } Mio_HostMsgId;
00309
00312 #define Mio_HostMsgIdIsValid(msg_id) ((unsigned)(msg_id) <= Mio_HostMsgId_Last)
00313
00316 #define Mio_HostMsgIdIsInvalid(msg_id) ((unsigned)(msg_id) > Mio_HostMsgId_Last)
00317
00318
00321 typedef enum
00322 {
00323 Mio_MioMsgId_ResetResp = 0,
00324 Mio_MioMsgId_LoopbackResp,
00325 Mio_MioMsgId_SetMioPortsModesResp,
00326 Mio_MioMsgId_GetMioPortsModesResp,
00327 Mio_MioMsgId_SetDigPortValueResp,
00328 Mio_MioMsgId_GetDigPortValueResp,
00329 Mio_MioMsgId_SetDigPortsValuesResp,
00330 Mio_MioMsgId_GetDigPortsValuesResp,
00331 Mio_MioMsgId_GetAnaPortsValuesResp,
00332 Mio_MioMsgId_ErrorResp,
00333 Mio_MioMsgId_StartTask,
00334 Mio_MioMsgId_StopTask,
00335 Mio_MioMsgId_GetDS18x20TaskTemp,
00336 Mio_MioMsgId_StartPWMOut,
00337 Mio_MioMsgId_AdjustPWMOut,
00338 Mio_MioMsgId_StartPWMIn,
00339 Mio_MioMsgId_SetPWMInMode,
00340 Mio_MioMsgId_GetPWMInResult,
00341 Mio_MioMsgId_StopPWM,
00342
00343
00344 Mio_MioMsgId_NumOfItems,
00345 Mio_MioMsgId_First = Mio_MioMsgId_LoopbackResp,
00346 Mio_MioMsgId_Last = Mio_MioMsgId_NumOfItems - 1
00347
00348 } Mio_MioMsgId;
00349
00352 #define Mio_MioMsgIdIsValid(msg_id) ((unsigned)(msg_id) <= Mio_MioMsgId_Last)
00353
00356 #define Mio_MioMsgIdIsInvalid(msg_id) ((unsigned)(msg_id) > Mio_MioMsgId_Last)
00357
00358
00361 typedef enum
00362 {
00363 Mio_CpuPort_P0 = 0,
00364 Mio_CpuPort_P1,
00365 Mio_CpuPort_P2,
00366 Mio_CpuPort_P3,
00367 Mio_CpuPort_P4,
00368 Mio_CpuPort_P6,
00369
00370 Mio_CpuPort_NumOfItems,
00371 Mio_CpuPort_First = Mio_CpuPort_P0,
00372 Mio_CpuPort_Last = Mio_CpuPort_P6
00373
00374 } Mio_CpuPort;
00375
00378 #define Mio_CpuPortIsValid(mio_cpu_port) ((unsigned)(mio_cpu_port) <= Mio_CpuPort_Last)
00379
00382 #define Mio_CpuPortIsInvalid(mio_cpu_port) ((unsigned)(mio_cpu_port) > Mio_CpuPort_Last)
00383
00384
00385 #endif // MioComm_h
00386