]> rtime.felk.cvut.cz Git - arc.git/blobdiff - include/CanNm_Internal.h
Merge branch 'mikulka' of git@rtime.felk.cvut.cz:arc into mikulka
[arc.git] / include / CanNm_Internal.h
index 68381e566bf734d35e77d2ffd140905dffbcfb56..b879a3ffbcf53a2b5fe7a88ba3e7654ffba64f53 100644 (file)
 #ifndef CANNM_INTERNAL_H_\r
 #define CANNM_INTERNAL_H_\r
 \r
+/** @req CANNM188  @req CANNM196  @req CANNM199    */\r
 #if (CANNM_DEV_ERROR_DETECT == STD_ON)\r
-#define CANNM_DET_REPORTERROR(serviceId, errorId)                      \\r
-       Det_ReportError(MODULE_ID_CANNM, 0, serviceId, errorId)\r
+#define CANNM_DET_REPORTERROR(serviceId, errorId, instanceId)                  \\r
+       Det_ReportError(MODULE_ID_CANNM, (uint8)instanceId, serviceId, errorId)\r
 \r
-#define CANNM_VALIDATE(expression, serviceId, errorId, ...)    \\r
+#define CANNM_VALIDATE(expression, serviceId, errorId, instanceId, ...)        \\r
        if (!(expression)) {                                                                    \\r
-               CANNM_DET_REPORTERROR(serviceId, errorId);                      \\r
+               CANNM_DET_REPORTERROR(serviceId, errorId, instanceId);                  \\r
                return __VA_ARGS__;                                                                     \\r
        }\r
 \r
 #endif\r
 \r
 #define CANNM_VALIDATE_INIT(serviceID, ...)                                    \\r
-               CANNM_VALIDATE((CanNm_Internal.InitStatus == CANNM_INIT), serviceID, CANNM_E_NO_INIT, __VA_ARGS__)\r
+               CANNM_VALIDATE((CanNm_Internal.InitStatus == CANNM_INIT), serviceID, CANNM_E_NO_INIT, 0, __VA_ARGS__)\r
 \r
+/** @req CANNM192 */\r
 #define CANNM_VALIDATE_CHANNEL(channel, serviceID, ...)                                        \\r
-               CANNM_VALIDATE( (channel < CANNM_CHANNEL_COUNT), serviceID, CANNM_E_INVALID_CHANNEL, __VA_ARGS__)\r
+               CANNM_VALIDATE( (channel < CANNM_CHANNEL_COUNT), serviceID, CANNM_E_INVALID_CHANNEL, channel, __VA_ARGS__)\r
 \r
 #define CANNM_VALIDATE_NOTNULL(ptr, serviceID, ...)    \\r
-               CANNM_VALIDATE( (ptr != NULL), serviceID, NM_E_NULL_POINTER, __VA_ARGS__)\r
+               CANNM_VALIDATE( (ptr != NULL), serviceID, NM_E_NULL_POINTER, 0, __VA_ARGS__)\r
 \r
 typedef enum {\r
        CANNM_INIT,\r
-       CANNM_UNINIT,\r
+       CANNM_UNINIT\r
 } CanNm_InitStatusType;\r
 \r
+typedef struct {\r
+       Nm_ModeType                                     Mode;                           /**< @req CANNM092 */\r
+       Nm_StateType                            State;                          /**< @req CANNM094 */\r
+       boolean                                         Requested;\r
+       uint32                                          TimeoutTimeLeft;\r
+       uint32                                          RepeatMessageTimeLeft;\r
+       uint32                                          WaitBusSleepTimeLeft;\r
+       uint32                                          MessageCycleTimeLeft;\r
+       uint32                                          MessageCycleOffsetTimeLeft;\r
+       uint8                                           TxMessageSdu[8];\r
+       uint8                                           RxMessageSdu[8];\r
+} CanNm_Internal_ChannelType;\r
+\r
 typedef struct {\r
        CanNm_InitStatusType            InitStatus;\r
+       CanNm_Internal_ChannelType      Channels[CANNM_CHANNEL_COUNT];\r
 } CanNm_InternalType;\r
 \r
+/* Timer helpers */\r
+static inline void CanNm_Internal_TickTimeoutTime( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_TickRepeatMessageTime( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_TickWaitBusSleepTime( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_TickMessageCycleTime( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_ClearCbv( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+/* Message helpers */\r
+static inline void CanNm_Internal_TransmitMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline uint8 CanNm_Internal_GetUserDataOffset( const CanNm_ChannelType* ChannelConf );\r
+static inline uint8* CanNm_Internal_GetUserDataPtr( const CanNm_ChannelType* ChannelConf, uint8* MessageSduPtr );\r
+static inline uint8 CanNm_Internal_GetUserDataLength( const CanNm_ChannelType* ChannelConf );\r
+\r
+/* Transition helpers */\r
+static inline void CanNm_Internal_PrepareBusSleep_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_PrepareBusSleep_to_BusSleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+static inline void CanNm_Internal_BusSleep_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_BusSleep_to_BusSleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+static inline void CanNm_Internal_RepeatMessage_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_RepeatMessage_to_ReadySleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_RepeatMessage_to_NormalOperation( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+static inline void CanNm_Internal_NormalOperation_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_NormalOperation_to_ReadySleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_NormalOperation_to_NormalOperation( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+static inline void CanNm_Internal_ReadySleep_to_NormalOperation( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_ReadySleep_to_PrepareBusSleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+static inline void CanNm_Internal_ReadySleep_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+static inline void CanNm_Internal_NetworkMode_to_NetworkMode( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal );\r
+\r
+\r
 #endif /* CANNM_INTERNAL_H_ */\r