My Project
CansimAPI.h
Go to the documentation of this file.
1/***************************************************************************************/
5#ifndef _CANSIMAPI_H_
6#define _CANSIMAPI_H_
7
8
9// Common includes
10#include <stdint.h>
11#include <stdio.h>
12#include <stdbool.h>
13
14// Lib exporting macro
15#ifndef DllExport
16# if defined(_WIN32)
17 #if defined BUILD_CANSIM_DLL
18 # define DllExport __declspec(dllexport)
19 #else
20 #ifdef BUILD_CANSIM_STATIC
21 #define DllExport
22 #else
23 #define DllExport __declspec(dllimport)
24 #endif
25 #endif
26# else
27# define DllExport __attribute__ ((visibility("default")))
28# endif
29#endif // DllExport
30
31
32#ifndef __cplusplus
33typedef void *CansimHandler;
34#endif // !__cplusplus
35
36#ifdef __cplusplus
37 #ifdef _CANSIMAPI_INT_H_
38 class Cansim;
39 typedef Cansim* CansimHandler;
40 #else
41 typedef void *CansimHandler;
42 #endif
43extern "C" {
44#endif
45
46
47typedef void(*PrintFunc)(const char*);
48
49typedef enum LOG_LEVELS_CANSIM {
54
55
98typedef struct tagCanMessage {
99 uint8_t DLC; // Data length
100 uint8_t CanMap; //
101 uint8_t CanGatewayNumber; // Kde je gateway
102 uint32_t ID;
104 bool FD; // FD {CAN with Flexible Data-Rate}
105 bool Error; // FD
106 bool BRS; // FD {Bit Rate Switch}
108 bool Enable;
110 uint16_t InhibitTime;
111 uint16_t Period;
112 uint16_t PeriodFast;
114
115typedef struct tagRecvMsgCansim {
116 int32_t Handler;
117 uint16_t CanId16;
118 uint8_t CanPort;
119 uint8_t DLC;
121 bool FD;
122 bool Error;
123 bool BRS;
124 uint32_t timestamp;
126
127
134DllExport uint8_t DLC2length(uint8_t* DLC);
135
142
149
163 const char* COMPort,
164 const uint32_t ReadTimeout,
165 const uint32_t WriteTimeout);
166
172
184
190
194DllExport void DebugCommCansim(CansimHandler Handle, const char *FileName);
195
208
221DllExport int32_t RebootCansim(CansimHandler Handle, const bool Jump);
222
234
248
264 const uint8_t* Data);
265
278DllExport int32_t RemoveMessageCansim(CansimHandler Handle, const uint16_t MsgHandler);
279
292DllExport int32_t EnableMessageCansim(CansimHandler Handle, const uint16_t MsgHandler);
293
305DllExport int32_t DisableMessageCansim(CansimHandler Handle, const uint16_t MsgHandler);
306
322DllExport int32_t SetMessageDataCansim(CansimHandler Handle, const uint16_t MsgHandler,
323 const uint8_t* Data, const uint8_t* DataMask,
324 const bool Async, const bool response);
325
342DllExport int32_t GetHandlerCansim(CansimHandler Handle, const uint8_t CanMap,
343 const uint8_t CanGatewayNumber, const uint32_t CanID,
344 const bool ExtendedCanID, const bool FastSlowSend, const bool FD);
345
355DllExport int32_t EnableRequestCansim(CansimHandler Handle, const uint16_t ReqHandler);
356
366DllExport int32_t DisableRequestCansim(CansimHandler Handle, const uint16_t ReqHandler);
367
377DllExport int32_t RemoveRequestCansim(CansimHandler Handle, const uint16_t ReqHandler);
378
403 const uint8_t CanMap,
404 const uint32_t CanID,
405 const bool Enabled,
406 const bool ExtendedCanID,
407 const uint8_t DLC,
408 const bool CheckDLC,
409 const bool ReturnID,
410 const uint8_t* Mask);
426 const int32_t MsgHandler,
427 const uint16_t StartSymbol,
428 const uint16_t StopSymbol);
448 const uint16_t SigHandler,
449 uint32_t *Value,
450 uint32_t *TimeFromReceive,
451 bool GetLatest);
471 const uint16_t SigHandler,
472 uint64_t *Value,
473 uint32_t *TimeFromReceive,
474 bool GetLatest);
475
510 const uint16_t MsgHandler,
511 const uint8_t Group,
512 const uint16_t StartSymbol,
513 const uint16_t StopSymbol,
514 const uint8_t MuxInfo);
515
530 const uint16_t SigHandler,
531 const uint16_t Value,
532 const bool async,
533 const bool response);
534
546
559DllExport int32_t RemoveSignalCansim(CansimHandler Handle, const uint16_t SigHandler);
560
573DllExport int32_t ExecuteSignalChangeCansim(CansimHandler Handle, const bool response);
574
591 const uint16_t SigHandler,
592 const uint8_t ControlNumber,
593 const uint32_t MinValue,
594 const uint32_t MidValue,
595 const uint32_t MaxValue);
596
610 const uint8_t Sgroup,
611 const uint16_t Value);
612
613
614DllExport int32_t AddCrcCansim(CansimHandler Handle, const uint8_t* S_PDU_Kennungsfolge);
615DllExport int32_t ChangeCrcCansim(CansimHandler Handle, const uint16_t MsgHandler, uint8_t* S_PDU_Kennungsfolge);
616DllExport int32_t DisableCrcCansim(CansimHandler Handle, const uint16_t MsgHandler);
617
619
636 const int32_t MsgHandler,
637 PtrRecvMsgCansim DataStruct,
638 uint8_t* Data,
639 const uint8_t Length);
640
651 const uint16_t address,
652 const uint8_t length,
653 uint8_t* data);
654
665 const uint16_t address,
666 const uint8_t length,
667 const uint8_t* data);
668
676DllExport int32_t GetTimeCansim(CansimHandler Handle, time_t* time);
677
685DllExport int32_t SetTimeCansim(CansimHandler Handle, time_t time);
686
687/* Printer wrapper */
688DllExport int32_t SetPrintFileCansim(CansimHandler Handle, FILE* PrintStream, LOG_LEVELS_CANSIM Level);
689DllExport int32_t ClearPrintFileCansim(CansimHandler Handle, FILE* PrintStream, LOG_LEVELS_CANSIM Level);
692
693DllExport void PrintfErrCansim(CansimHandler Handle, const char* Text, ...);
694DllExport void PrintfInfCansim(CansimHandler Handle, const char* Text, ...);
695
696#ifdef __cplusplus
697}
698#endif
699
700#endif // CANSIMAPI_CANSIMAPI_H_
DllExport int32_t AddCrcCansim(CansimHandler Handle, const uint8_t *S_PDU_Kennungsfolge)
struct tagCanMessage * PtrCanMessage
DllExport int32_t RemoveRequestCansim(CansimHandler Handle, const uint16_t ReqHandler)
Remove message request - does not freeing memory, but lowering cansim's CPU usage.
DllExport void DeleteCansim(CansimHandler Handle)
DllExport int32_t RemoveMessageCansim(CansimHandler Handle, const uint16_t MsgHandler)
Removes message from Cansim,.
struct tagCanMessage CanMessage
struct tagRecvMsgCansim * PtrRecvMsgCansim
DllExport CansimHandler NewCansim(void)
DllExport void StopReceiverCansim(CansimHandler Handle)
Stop the receiver thread - check Cansim::StartReceiver.
DllExport int32_t DisableRequestCansim(CansimHandler Handle, const uint16_t ReqHandler)
Disable message request.
DllExport int32_t ConnectCansim(CansimHandler Handle, const char *COMPort, const uint32_t ReadTimeout, const uint32_t WriteTimeout)
Open serial connection to the CANSim4.
DllExport int32_t ResetCansim(CansimHandler Handle)
Reset Cansim device. It means that all messages, signals, etc. will be removed even default messages,...
DllExport int32_t WriteEepromCansim(CansimHandler Handle, const uint16_t address, const uint8_t length, const uint8_t *data)
Write to internal EEPROM memory.
DllExport int32_t RemoveSignalCansim(CansimHandler Handle, const uint16_t SigHandler)
Remove CAN signal specified by its handler. It does not freeing a memory but lowering Camsim's CPU lo...
DllExport int32_t GetHandlerCansim(CansimHandler Handle, const uint8_t CanMap, const uint8_t CanGatewayNumber, const uint32_t CanID, const bool ExtendedCanID, const bool FastSlowSend, const bool FD)
Get the specified message handler by Cansim request.
void(* PrintFunc)(const char *)
Definition: CansimAPI.h:47
void * CansimHandler
Definition: CansimAPI.h:33
DllExport void DebugCommCansim(CansimHandler Handle, const char *FileName)
DllExport int32_t SetSignalControlCansim(CansimHandler Handle, const uint16_t SigHandler, const uint8_t ControlNumber, const uint32_t MinValue, const uint32_t MidValue, const uint32_t MaxValue)
Set the Signal Control object TODO!
DllExport int32_t GetTimeCansim(CansimHandler Handle, time_t *time)
Get the Cansim unix time.
DllExport uint8_t DLC2length(uint8_t *DLC)
This method converts DLC to length according to: https://elearning.vector.com/mod/page/view....
DllExport int32_t ClearPrintFileCansim(CansimHandler Handle, FILE *PrintStream, LOG_LEVELS_CANSIM Level)
DllExport int32_t RequestSignalCansim(CansimHandler Handle, const int32_t MsgHandler, const uint16_t StartSymbol, const uint16_t StopSymbol)
This method gets a signal from a message specified by the requested message handler....
DllExport int32_t StartReceiverCansim(CansimHandler Handle)
This method starts thread for receiving messages. Designed for receiving asynchronous messages....
DllExport int32_t DisableMessageCansim(CansimHandler Handle, const uint16_t MsgHandler)
Disable message transmission to the CAN bus.
DllExport int32_t SignalReadValue32Cansim(CansimHandler Handle, const uint16_t SigHandler, uint32_t *Value, uint32_t *TimeFromReceive, bool GetLatest)
This method reads cached 32 bit value of the signal registered by Cansim::RequestSignal.
DllExport void PrintfInfCansim(CansimHandler Handle, const char *Text,...)
DllExport int32_t GetVersionCansim(CansimHandler Handle)
Get the cansim firmware api version.
DllExport int32_t AddMessageCansim(CansimHandler Handle, const PtrCanMessage Msg, const uint8_t *Data)
This method add and configure CAN message to the cansim device to transmit.
DllExport int32_t RequestMessageCansim(CansimHandler Handle, const uint8_t CanMap, const uint32_t CanID, const bool Enabled, const bool ExtendedCanID, const uint8_t DLC, const bool CheckDLC, const bool ReturnID, const uint8_t *Mask)
Method provide receiving specific CAN bus message to the serial line. Message register by this method...
DllExport int32_t RebootCansim(CansimHandler Handle, const bool Jump)
This method cause Cansim reboot. Takes about 2 seconds.
DllExport int32_t ChangeSignalSgroupCansim(CansimHandler Handle, const uint8_t Sgroup, const uint16_t Value)
Change signals values in whole group. Signal group has to be < 30!
DllExport int32_t EnableRequestCansim(CansimHandler Handle, const uint16_t ReqHandler)
Enable message request.
DllExport int32_t ClearPrintFunctionCansim(CansimHandler Handle, PrintFunc, LOG_LEVELS_CANSIM Level)
DllExport int32_t ReadAsyncMsgCansim(CansimHandler Handle, const int32_t MsgHandler, PtrRecvMsgCansim DataStruct, uint8_t *Data, const uint8_t Length)
Read buffered asynchronous message - nonblocking.
DllExport int32_t BootloaderCansim(CansimHandler Handle)
Cansim bootloader (regime "F").
DllExport void DisconnectCansim(CansimHandler Handle)
Method to close Cansim's communication port.
DllExport int32_t SignalReadValue64Cansim(CansimHandler Handle, const uint16_t SigHandler, uint64_t *Value, uint32_t *TimeFromReceive, bool GetLatest)
This method reads cached 64 bit value of the signal registered by Cansim::RequestSignal.
DllExport int32_t AddSignalCansim(CansimHandler Handle, const uint16_t MsgHandler, const uint8_t Group, const uint16_t StartSymbol, const uint16_t StopSymbol, const uint8_t MuxInfo)
This method adds a signal to a message specified by handler. Signal range is specified by start and s...
DllExport int32_t SetTimeCansim(CansimHandler Handle, time_t time)
Set the Cansim unix time.
DllExport int32_t SetMessageDataCansim(CansimHandler Handle, const uint16_t MsgHandler, const uint8_t *Data, const uint8_t *DataMask, const bool Async, const bool response)
Set the CAN Message value.
DllExport int32_t GetInternalThreadStatus(CansimHandler Handle)
DllExport void PrintfErrCansim(CansimHandler Handle, const char *Text,...)
DllExport int32_t ExecuteSignalChangeCansim(CansimHandler Handle, const bool response)
Execute signals change triggered on this event. It may be single signal groups or single signal which...
DllExport int32_t SetPrintFunctionCansim(CansimHandler Handle, PrintFunc, LOG_LEVELS_CANSIM Level)
LOG_LEVELS_CANSIM
Definition: CansimAPI.h:49
@ ERROR_LEVEL_CANSIM
Definition: CansimAPI.h:50
@ COMM_LEVEL_CANSIM
Definition: CansimAPI.h:52
@ INFO_LEVEL_CANSIM
Definition: CansimAPI.h:51
DllExport int32_t BlobRemoveCansim(CansimHandler Handle)
Remove blob from cansim memory.
DllExport int32_t EnableMessageCansim(CansimHandler Handle, const uint16_t MsgHandler)
Enable message transmission to the CAN bus.
DllExport int32_t DisableCrcCansim(CansimHandler Handle, const uint16_t MsgHandler)
DllExport int32_t ReadEepromCansim(CansimHandler Handle, const uint16_t address, const uint8_t length, uint8_t *data)
Read Cansim internal EEPROM memory.
struct tagRecvMsgCansim RecvMsgCansim
DllExport int32_t SetPrintFileCansim(CansimHandler Handle, FILE *PrintStream, LOG_LEVELS_CANSIM Level)
DllExport int32_t ChangeCrcCansim(CansimHandler Handle, const uint16_t MsgHandler, uint8_t *S_PDU_Kennungsfolge)
DllExport int32_t SignalChangeValueCansim(CansimHandler Handle, const uint16_t SigHandler, const uint16_t Value, const bool async, const bool response)
Change value of signal specified by handler.
#define DllExport
Definition: CansimAPI.h:27
This structure contains all possible options for the configuration of a CAN message for transmitting ...
Definition: CansimAPI.h:98
uint8_t CanGatewayNumber
Member 'CanGatewayNumber' should contains same value as 'CanMap' (not implemented).
Definition: CansimAPI.h:101
bool Error
TODO(JKI): Nevim je potreba dodelat - souvisi s CAN FD.
Definition: CansimAPI.h:105
uint32_t ID
Member 'ID' contains CAN message ID (length depends if is Extended ID enabled).
Definition: CansimAPI.h:102
bool ExtendedID
Member 'ExtendedID' contains flag if message use extended CAN ID.
Definition: CansimAPI.h:103
bool FastSlowSend
Message is transmitted with tagCanMessage::PeriodFast.
Definition: CansimAPI.h:109
bool BRS
Member 'FD' flag if is CAN FD BRS enabled.
Definition: CansimAPI.h:106
bool GroupID
Member 'GroupID' contains an ID of group for bulk management.
Definition: CansimAPI.h:107
uint16_t Period
Member 'Period' contains periode time of the CAN message in milliseconds.
Definition: CansimAPI.h:111
uint16_t PeriodFast
Member 'Period' contains fast sending period in milliseconds The definition of inhibit time is in CAN...
Definition: CansimAPI.h:112
bool FD
Member 'FD' flag if is CAN FD enabled.
Definition: CansimAPI.h:104
uint8_t CanMap
Member 'CanMap' contains mask of output CAN interfaces.
Definition: CansimAPI.h:100
uint16_t InhibitTime
Member 'InhibitTime' contains inhibit time of message in milliseconds. The definition of inhibit time...
Definition: CansimAPI.h:110
bool Enable
Member 'Enable' contains a flag if the message will be enabled instantly after Cansim receive configu...
Definition: CansimAPI.h:108
uint8_t DLC
Member 'DLC' contains a CAN Data Length Code. https://elearning.vector.com/mod/page/view....
Definition: CansimAPI.h:99
Definition: CansimAPI.h:115
uint8_t DLC
Definition: CansimAPI.h:119
uint16_t CanId16
Definition: CansimAPI.h:117
uint32_t timestamp
Definition: CansimAPI.h:124
bool BRS
Definition: CansimAPI.h:123
bool FD
Definition: CansimAPI.h:121
bool Error
Definition: CansimAPI.h:122
uint8_t CanPort
Definition: CansimAPI.h:118
int32_t Handler
Definition: CansimAPI.h:116
bool ExtendedID
Definition: CansimAPI.h:120