// PISOCANCPM.h : PISO-CAN CPM DLL header file // #ifndef __PISOCANCPM_H #define __PISOCANCPM_H #ifdef __cplusplus extern "C" { #endif #ifdef PISOCANCPM_API_EXPORTS #define PISOCANCPM_API extern "C" __declspec(dllexport) #else #define PISOCANCPM_API extern "C" __declspec(dllimport) #endif // CANopen Master Error Code Define #define CPM_NoError 0 #define CPM_DriverError 1 #define CPM_BoardNumberErr 3 #define CPM_PortNumberError 4 #define CPM_ConfigErr 5 #define CPM_MasterInitErr 6 #define CPM_MasterNotInit 7 #define CPM_ListenMode 8 #define CPM_NodeErr 9 #define CPM_NodeExist 10 #define CPM_AddModeErr 11 #define CPM_TxBusy 12 #define CPM_UnknowCmd 13 #define CPM_CmdReceErr 14 #define CPM_DataEmpty 15 #define CPM_MemAllocErr 16 #define CPM_SendCycMsgErr 17 #define CPM_StatusErr 18 #define CPM_SetGuardErr 20 #define CPM_SetHbeatErr 21 #define CPM_SegLenErr 22 #define CPM_SegToggleErr 23 #define CPM_SegWriteErr 24 #define CPM_Abort 25 #define CPM_PDOLenErr 26 #define CPM_COBIDErr 27 #define CPM_PDOInstErr 28 #define CPM_PDODynaErr 29 #define CPM_PDONumErr 30 #define CPM_PDOSetErr 31 #define CPM_PDOEntryErr 32 #define CPM_SetCobIdErr 33 #define CPM_CycFullErr 34 #define CPM_Timeout 35 #define CPM_DataLenErr 36 #define CPM_Wait 40 #define CPM_Processing 41 #define CPM_LoadEDSErr 50 #define CPM_EDSFormatErr 51 // CANopen Master NMTErr Event Define #define CPM_Node_Guarding_Event 1 #define CPM_Heartbeat_Event 2 //////////////////////////////////////// // PISO-CAN CPM Lib function library //////////////////////////////////////// //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetCANDriverVer // Description: Get PISO-CAN card driver version // Parameter: void //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetCANDriverVer(void); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetVersion // Description: Get PISO-CAN CPM driver version // Parameter: void //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetVersion(void); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_TotalBoard // Description: Get total PISO-CAN board number // Parameter: void //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_TotalBoard(void); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetCardPortNum // Description: Get PISO-CAN card CAN port number // Parameter: BoardNo: PISO-CAN board number // bGetPortNum: CAN port number response //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetCardPortNum(BYTE BoardNo, BYTE *bGetPortNum); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetBoardInf // Description: Get PISO-CAN board information // Parameter: BoardNo: PISO-CAN board number // *dwVID: // *dwDID: // *dwSVID: // *dwSDID: // *dwSAuxID: // *dwIrqNo: //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetBoardInf(BYTE BoardNo, DWORD *dwVID,DWORD *dwDID, DWORD *dwSVID,DWORD *dwSDID,DWORD *dwSAuxID,DWORD *dwIrqNo); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SetFunctionTimeout // Description: Set function timeout // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) // FunTimeout: Max timeout ms of per function //////////////////////////////////////// PISOCANCPM_API void CALLBACK CPM_SetFunctionTimeout(BYTE BoardNo, BYTE Port, DWORD FunTimeout); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetCANStatus // Description: Get CAN error status of the PISO-CAN card // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) // *bStatus: get CAN error status //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetCANStatus(BYTE BoardNo, BYTE Port, BYTE *bStatus); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_InitMaster // Description: Initial Master, must be call once before all others function // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) // BaudRate: 0 ~ 7 ==> 10 k ~ 1000 k bps // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_InitMaster(BYTE BoardNo, BYTE Port, BYTE Node, BYTE BaudRate, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ShutdownMaster // Description: Close and release CPM Master port // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ShutdownMaster(BYTE BoardNo, BYTE Port); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_MasterSendBootupMsg // Description: Let PISO-CAN send a boot up message (only for Master Node >= 1) // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_MasterSendBootupMsg(BYTE BoardNo, BYTE Port, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SetMasterMode // Description: Set Master to normal mode or listen mode // Parameter: BoardNo: PISO-CAN board number // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Mode: 0 is normal mode (default), 1 is listen mode, 2 is listen all id mode (disable now) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SetMasterMode(BYTE BoardNo, BYTE Port, BYTE Mode, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMasterMode // Description: Get Master mode // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Mode: 0 is normal mode (default), 1 is listen mode // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMasterMode(BYTE BoardNo, BYTE Port, BYTE *Mode, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_EDS_Load // Description: Load EDS File // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node // *FilePath: EDS file path (ex: "\\Temp\\ABC.EDS") // DelayTime: After send a CAN message will delay some time // ResTimeout: Set CAN message timeout //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_EDS_Load(BYTE BoardNo, BYTE Port, BYTE Node, char* FilePath, WORD DelayTime, WORD ResTimeout, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_AddNode // Description: Add Slave Node to Master // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node // AddMode: 1:Auto Add Node, 2:Add Manual, 3:Wait to Add // DelayTime: After send a CAN message will delay some time // ResTimeout: Set CAN message timeout // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_AddNode(BYTE BoardNo, BYTE Port, BYTE Node, BYTE AddMode, WORD DelayTime, WORD ResTimeout, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_RemoveNode // Description: Remove Slave Node from Master // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_RemoveNode(BYTE BoardNo, BYTE Port, BYTE Node, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_RemoveAndResetNode // Description: Remove Slave and then Reset Node from Master // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_RemoveAndResetNode(BYTE BoardNo, BYTE Port, BYTE Node, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_DelayAndResponseTimeout // Description: Change delay time and response timeout value of the node // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // DelayTime: After send a CAN message will delay some time // ResTimeout: Set CAN message timeout // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_DelayAndResponseTimeout(BYTE BoardNo, BYTE Port, BYTE Node, WORD DelayTime, WORD ResTimeout, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ScanNode // Description: Scan real node id on the CANopen bus // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // S_Node: Start scan node id // E_Node: End scan node id // If S_Node > E_Node or E_Node = 0, will scan all node id (1~127) // *NodeList: 16 BYTE Array. Return Node Id List of the CANopen Bus. Each bit represents a slave node // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ScanNode(BYTE BoardNo, BYTE Port, BYTE S_Node, BYTE E_Node, BYTE *NodeList, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetNodeList // Description: Get Node Id List of the Master had added // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // *NodeList: 16 BYTE Array. Return Node Id List of the Master had added. Each bit represents a slave node // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetNodeList(BYTE BoardNo, BYTE Port, BYTE *NodeList, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_NMTChangeState // Description: Set Node State // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // State: NMT State // (1:Operation mode, 2:Stop mode, 128:Pre-operation mode, 129:Reset node, 130:Reset communication) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_NMTChangeState(BYTE BoardNo, BYTE Port, BYTE Node, BYTE State, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_NMTGetState // Description: Get Node State // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // *State: Return NMT State // (4:Stop mode, 5:Operation mode, 127:Pre-operation mode) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_NMTGetState(BYTE BoardNo, BYTE Port, BYTE Node, BYTE *State, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_NMTGuarding // Description: Start Guarding // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // GuardTime: set index 0x100C // (Master will send Guarding message per GuardTime ms). // LiftTime: set index 0x100D // (If Master doesn't receive Guarding response over LiftTime times, it will timeout and Node_Guarding_Event occur) // (The Guarding timeout = GuardTime * LiftTime ) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 // Note 1: It is not allowed for one slave to use both Guarding protocol and Heartbeat protocol at the same time. // Node 2: In listen mode, the function will listen the Guarding message send from other Master to slave on the CANopen bus. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_NMTGuarding(BYTE BoardNo, BYTE Port, BYTE Node, WORD GuardTime, BYTE LiftTime, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_NMTHeartbeat // Description: Start Heartbeat // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // ProduceTime: set index 0x1017 // ConsumeTime: Timeout of Heartbeat // (ConsumeTime must more then ProduceTime) // (If Master doesn't receive slave Heartbeat over ConsumeTime ms, it will timeout and Heartbeat_Event occur) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 // Note: It is not allowed for one slave to use both Guarding protocol and Heartbeat protocol at the same time. // Node 2: In listen mode, the function will listen only and can't start Heartbeat protocol. So Heartbeat protocol must start from other Master. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_NMTHeartbeat(BYTE BoardNo, BYTE Port, BYTE Node, WORD ProduceTime, WORD ConsumeTime, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SDOReadData // Description: SDO Read Data. If the data length is more than 1024 bytes, the Data will return NULL, // and user need uses CPM_SDOReadFile to read the SDO data. // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Index: Index of Object Dectionary // SubIndex: SubIndex of Object Dectionary // *RDLen: Response Data Length // *RData: Response Data (If RDLen >= 1024, this parameter will return NULL.) // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SDOReadData(BYTE BoardNo, BYTE Port, BYTE Node, WORD Index, BYTE SubIndex, DWORD *RDLen, BYTE *RData, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SDOReadFile // Description: SDO Read File. After CPM_SDOReadData, if the data length is more than 1024 bytes, // user need uses this function to read the SDO data file. // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node // *Index: Index of Object Dectionary // *SubIndex: SubIndex of Object Dectionary // Start: Start position to read the SDO data file // Len: Max read byte // RDLen: Return read data length // RData: Return data //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SDOReadFile(BYTE BoardNo, BYTE Port, BYTE Node, WORD Index, BYTE SubIndex, DWORD Start, DWORD Len, DWORD *RDLen, BYTE *RData); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SDOWriteData // Description: SDO Write Data // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Index: Index of Object Dectionary // SubIndex: SubIndex of Object Dectionary // TDLen: Write Data Length // *TData: Write Data // *RDLen: Response Data Length // *RData: Response Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SDOWriteData(BYTE BoardNo, BYTE Port, BYTE Node, WORD Index, BYTE SubIndex, DWORD TDLen, BYTE *TData, WORD *RDLen, BYTE *RData, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SDOAbortTransmit // Description: Send SDO Abort Message // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Index: Index of Object Dectionary // SubIndex: SubIndex of Object Dectionary // *TData: Abort Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SDOAbortTransmit(BYTE BoardNo, BYTE Port, BYTE Node, WORD Index, BYTE SubIndex, DWORD TData, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOWrite // Description: Output PDO data // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob Id // DLen: Data Length // *Data: PDO Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOWrite(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE Offset, BYTE DLen, BYTE *Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOWrite_Fast // Description: Output PDO data directly // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob Id // DLen: Data Length // Data: PDO Data //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOWrite_Fast(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE Offset, BYTE DLen, BYTE *Data); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDORemote // Description: Remote PDO data // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob Id // *DLen: Response Data Length // *Data: Response PDO Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDORemote(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE *DLen, BYTE *Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDORemote_Fast // Description: Send requst to remote PDO data, but do not check the response // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob Id //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDORemote_Fast(BYTE BoardNo, BYTE Port, WORD Cobid); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SetPDORemotePolling // Description: Set PDO polling list for remote PDO (max 125 PDO one time) // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // PDOCnt: Total PDO number that want to be polling // Cobid: PDO list that want to be polling // PollingTime: Min. polling Time // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SetPDORemotePolling(BYTE BoardNo, BYTE Port, BYTE PDOCnt, WORD *Cobid, WORD PollingTime, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetPDOLastData // Description: Get PDO last data // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob Id // *IsNew: Is new data, 0 is old data, 1 is new data // *DLen: Get PDO Data Length // *Data: Get PDO Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetPDOLastData(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE *IsNew, BYTE *DLen, BYTE *Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMultiPDOData // Description: Get multi PDO data (this function can get max 50 PDO data every times) // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // PDOCnt: Total PDO number that want to get // Cobid: All PDO Cob Id that want to get // IsNew: Is new data, 0 is old data, 1 is new data // DLen: PDO Data Length // Data: PDO Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMultiPDOData(BYTE BoardNo, BYTE Port, BYTE PDOCnt, WORD *Cobid, BYTE *IsNew, BYTE *DLen, BYTE *Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetRxPDOID // Description: Get Rx PDO Cob ID List of slave // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // *PDO_Cnt: Response RxPDO ID total number // *Id_List: Response *PDO_Cnt number RxPDO ID List // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetRxPDOID(BYTE BoardNo, BYTE Port, BYTE Node, BYTE *PDO_Cnt, WORD *Id_List, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetTxPDOID // Description: Get Tx PDO Cob ID List of slave // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // *PDO_Cnt: Response TxPDO ID total number // *Id_List: Response *PDO_Cnt number TxPDO ID List // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetTxPDOID(BYTE BoardNo, BYTE Port, BYTE Node, BYTE *PDO_Cnt, WORD *Id_List, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_InstallPDO // Description: Install PDO ID to Master // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // RxTx: 0 is RxPDO, 1 is TxPDO // PDO_No: PDO No. 0 ~ 511 // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_InstallPDO(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE RxTx, WORD PDO_No, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_DynamicPDO // Description: Dynamic PDO Mapping to Master // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // RxTx: 0 is RxPDO, 1 is TxPDO // Entry: Mapping Entry // EntryData: Mapping Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_DynamicPDO(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE RxTx, BYTE Entry, DWORD EntryData, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_RemovePDO // Description: Remove POD Entry // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // Entry: Remove Entry, 0 is for whole PDO // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_RemovePDO(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE Entry, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ChangePDOID // Description: Change POD ID // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Old_Cobid: Old Cobid // New_Cobid: Want to change to New Cobid // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ChangePDOID(BYTE BoardNo, BYTE Port, WORD Old_Cobid, WORD New_Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetPDOMapInfo // Description: Get PDO mapping information // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cobid // *PDONo: Get PDO No. // *RxTx: 0 is RxPDO, 1 is TxPDO // *Tx_Type: Transmission Type // *Event_Timer: Event Timer // *Entry_Cnt: Total entry number // *Map_Data: Mapping Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetPDOMapInfo(BYTE BoardNo, BYTE Port, WORD Cobid, WORD *PDONo, BYTE *RxTx, BYTE *Tx_Type, WORD *Event_Timer, BYTE *Entry_Cnt, DWORD *Map_Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_InstallPDO_List (Virtual List) // Description: Install PDO and Mapping PDO Data to Master List. // This function like CPM_InstallPDO_List, but it only build a virtual PDO let Master // can control the PDO. The virtual PDO is not the real node slave necessarily. // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // RxTx: 0 is RxPDO, 1 is TxPDO // PDO_No: PDO No. // TransmitType: Set transmission type // EventTimer: Set event timer // EntryUse: Total Mapping Entry // *EntryData: DWORD array for Total Mapping Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_InstallPDO_List(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE RxTx, WORD PDO_No, BYTE TransmitType, WORD EventTimer, BYTE EntryUse, DWORD *EntryData, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_RemovePDO_List (Virtual List) // Description: Remove PDO build from CPM_InstallPDO_List function // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // Entry: Remove Entry, 0 is for whole PDO // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_RemovePDO_List(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE Entry, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOUseEntry // Description: Change useful entry // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob ID // Entry: useful entry // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOUseEntry(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE Entry, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOTxType // Description: Set PDO Transmission Type // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob ID // Tx_Type: Transmission Type // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOTxType(BYTE BoardNo, BYTE Port, WORD Cobid, BYTE Tx_Type, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOEventTimer // Description: Set PDO Event Timer // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob ID // Timer: Event Timer // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOEventTimer(BYTE BoardNo, BYTE Port, WORD Cobid, WORD Timer, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_PDOInhibitTime // Description: Set PDO Inhibit Time // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: PDO Cob ID // Timer: Inhibit Time // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_PDOInhibitTime(BYTE BoardNo, BYTE Port, WORD Cobid, WORD Time, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ChangeSYNCID // Description: Change SYNC ID // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: SYNC ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ChangeSYNCID(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SetSYNC_List (Virtual List) // Description: Set or Change SYNC ID from Master // The function only build a virtual SYNC ID let Master can control it. // The virtual SYNC ID is not the real one necessarily. // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SetSYNC_List(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetSYNCID // Description: Get SYNC ID // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // *Cobid: SYNC ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetSYNCID(BYTE BoardNo, BYTE Port, BYTE Node, WORD *Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SendSYNCMsg // Description: Send SYNC message, most send 5 different SYNC at the same time // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Cobid: SYNC ID // Timer: Cyclic timer, 0 is stop or send 1 time SYNC message // Times: Cyclic times, 0 is always contiune // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SendSYNCMsg(BYTE BoardNo, BYTE Port, WORD Cobid, WORD Timer, DWORD Times, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetCyclicSYNCInfo // Description: Get Cyclic SYNC Info // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Cobid: 5 WORD Array, SYNC ID // *Timer: 5 WORD Array, Cyclic timer, 0 is stop or 1 time and // *Times: 5 DWORD Array, Cyclic times, 0 is always contiune // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetCyclicSYNCInfo(BYTE BoardNo, BYTE Port, WORD *Cobid, WORD *Timer, DWORD *Times, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ChangeEMCYID // Description: Change EMCY ID // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: EMCY ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ChangeEMCYID(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_SetEMCY_List (Virtual List) // Description: Set or Change EMCY ID from Master // The function only build a virtual EMCY ID let Master can control it. // The virtual EMCY ID is not the real one necessarily. // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // Cobid: PDO Cob ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_SetEMCY_List(BYTE BoardNo, BYTE Port, BYTE Node, WORD Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetEMCYID // Description: Get EMCY ID // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node // *Cobid: EMCY ID // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetEMCYID(BYTE BoardNo, BYTE Port, BYTE Node, WORD *Cobid, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ReadLastEMCY // Description: Get last message of the slave node // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // Node: Slave Node Id // *IsNew: Is new data, 0 is old data, 1 is new data // *Data: EMCY Data // BlockMode: Function Mode: Non-block function mode = 0, Block function mode = 1 //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ReadLastEMCY(BYTE BoardNo, BYTE Port, BYTE Node, BYTE *IsNew, BYTE *Data, BYTE BlockMode); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetBootUpNodeAfterAdd // Description: Get Boot up message after add node // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Node: Slave Node Id //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetBootUpNodeAfterAdd(BYTE *BoardNo, BYTE *Port, BYTE *Node); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetEMCYData // Description: Get EMCY data received from the PISO-CAN // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Node: Slave Node Id // *Data: EMCY Data //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetEMCYData(BYTE *BoardNo, BYTE *Port, BYTE *Node, BYTE *Data); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetNMTError // Description: Get NMT Error Control message from CANopen slave. // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Node: Slave Node Id // *NMTErrMode: Get NMT Error mode. // If Node_Guarding_Event, Mode = CPM_Node_Guarding_Event. // And if Heartbeat_Event, Mode = CPM_Heartbeat_Event. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetNMTError(BYTE *BoardNo, BYTE *Port, BYTE *Node, BYTE *NMTErrMode); // CPM_InstallBootUpISR: // Driver Version: 2.04 // After called CPM_InstallBootUpISR to install Boot ISR function. // When the Master received a Boot up message send from other slave device witch // had been added to the Master by calling CPM_AddNode, the Boot up ISR will be executed. PISOCANCPM_API WORD CALLBACK CPM_InstallBootUpISR(BYTE BoardNo, BYTE Port, void (*BOOTISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveBootUpISR(BYTE BoardNo, BYTE Port); // CPM_InstallRxSDOISR: // Driver Version: 2.04 // After called CPM_InstallEMCYISR to install EMCY ISR function. // When the Master received a EMCY message send from other slave device witch // had been added to the Master by calling CPM_AddNode, the EMCY ISR will be executed. PISOCANCPM_API WORD CALLBACK CPM_InstallEMCYISR(BYTE BoardNo, BYTE Port, void (*EMCYISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveEMCYISR(BYTE BoardNo, BYTE Port); // CPM_InstallNMTErrISR: // Driver Version: 2.04 // After called CPM_InstallNMTErrISR to install NMTErr ISR function. // When the Master occured a Node_Guarding_Event or Heartbeat_Event, the NMTErr ISR will be executed. PISOCANCPM_API WORD CALLBACK CPM_InstallNMTErrISR(BYTE BoardNo, BYTE Port, void (*NMTERRISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveNMTErrISR(BYTE BoardNo, BYTE Port); /////////////////////////////////////////////////////////////////////////////////////////////////// // Following ISR Funtions are only for Master with node id > 0. // It means if the "Node" parameter of CPM_InitMaster is 0, the following functions will useless. /////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMasterReadSDOEvent // Description: Get the Read SDO message for Master node id. // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Index: Index of Object Dectionary. // *SubIndex: SubIndex of Object Dectionary. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMasterReadSDOEvent(BYTE *BoardNo, BYTE *Port, WORD *Index, BYTE *SubIndex); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMasterWriteSDOEvent // Description: Get the Write SDO message for Master node id. // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *Index: Index of Object Dectionary. // *SubIndex: SubIndex of Object Dectionary. // *WLen: Write Data Length. // *WData: Write Data. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMasterWriteSDOEvent(BYTE *BoardNo, BYTE *Port, WORD *Index, BYTE *SubIndex, BYTE *WLen, BYTE *WData); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ResponseMasterSDO // Description: Response SDO message from CPM100U // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // ResType: Response read/write to SDO message (0 is read response, 1 is write response) // Index: Response Index of Object Dectionary // SubIndex: Response SubIndex of Object Dectionary // Len: Response data length (0 ~ 4) (Note: Write response must 0-byte) // *Data: Response data array (max. 4-bytes) //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ResponseMasterSDO(BYTE BoardNo, BYTE Port, BYTE ResType, WORD Index, BYTE SubIndex, BYTE Len, BYTE *Data); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMasterRemotePDOEvent // Description: Get the Remote PDO message for Master's PDO COB-ID. // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *CobId: PDO Cob Id. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMasterRemotePDOEvent(BYTE *BoardNo, BYTE *Port, WORD *CobId); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_GetMasterRxPDOEvent // Description: Get the Write PDO message for Master's PDO COB-ID. // Parameter: *BoardNo: PISO-CAN board number. // *Port: PISO-CAN CAN port (1 ~ Max CAN port) // *CobId: PDO Cob Id. // *WLen: Write Data Length. // *WData: Write Data. //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_GetMasterRxPDOEvent(BYTE *BoardNo, BYTE *Port, WORD *CobId, BYTE *WLen, BYTE *WData); //////////////////////////////////////// // Driver Version: 2.04 // Function: CPM_ResponseMasterPDO // Description: Response remote PDO message from CPM100U // Parameter: BoardNo: PISO-CAN board number. // Port: PISO-CAN CAN port (1 ~ Max CAN port) // CobId: Response remote PDO Cob Id. // Len: Response data length (1 ~ 8). // *Data: Response data array (max. 8-bytes). //////////////////////////////////////// PISOCANCPM_API WORD CALLBACK CPM_ResponseMasterPDO(BYTE BoardNo, BYTE Port, WORD CobId, BYTE Len, BYTE *Data); // CPM_InstallReadSDOISR: // Driver Version: 2.04 // If the Master had called CPM_InitMaster to initial Master with node n (128 > n > 0). // After installed CPM_InstallReadSDOISR, when the Master received a Read RxSDO message (message Cob ID is 0x600+n) // and the Master will produce an interrupt to execute the RSDOISR ISR function. PISOCANCPM_API WORD CALLBACK CPM_InstallReadSDOISR(BYTE BoardNo, BYTE Port, void (*RSDOISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveReadSDOISR(BYTE BoardNo, BYTE Port); // CPM_InstallWriteSDOISR: // Driver Version: 2.04 // If the Master had called CPM_InitMaster to initial Master with node n (128 > n > 0). // After installed CPM_InstallWriteSDOISR, when the Master received a Write RxSDO message (message Cob ID is 0x600+n) // and the Master will produce an interrupt to execute the WSDOISR ISR function. PISOCANCPM_API WORD CALLBACK CPM_InstallWriteSDOISR(BYTE BoardNo, BYTE Port, void (*WSDOISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveWriteSDOISR(BYTE BoardNo, BYTE Port); // CPM_InstallRxPDOISR: // Driver Version: 2.04 // If the Master had called CPM_InitMaster to initial Master with node n (128 > n > 0). // And if the Master also had called CPM_InstallPDO_List to install a RxPDO to itself (ex: PDO Cob ID is 0x200+n). // After installed CPM_InstallRxPDOISR, when the Master received the RxPDO message // and the Master will produce an interrupt to execute the RXPDOISR ISR function. PISOCANCPM_API WORD CALLBACK CPM_InstallRxPDOISR(BYTE BoardNo, BYTE Port, void (*RXPDOISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveRxPDOISR(BYTE BoardNo, BYTE Port); // CPM_InstallRemotePDOISR: // Driver Version: 2.04 // If the Master had called CPM_InitMaster to initial Master with node n (128 > n > 0). // And if the Master also had called CPM_InstallPDO_List to install a TxPDO to itself (ex: PDO Cob ID is 0x180+n). // After installed CPM_InstallRemotePDOISR, when the Master received the TxPDO message // and the Master will produce an interrupt to execute the REMOTEPDOISR ISR function. PISOCANCPM_API WORD CALLBACK CPM_InstallRemotePDOISR(BYTE BoardNo, BYTE Port, void (*REMOTEPDOISR)()); PISOCANCPM_API WORD CALLBACK CPM_RemoveRemotePDOISR(BYTE BoardNo, BYTE Port); #ifdef __cplusplus } #endif #endif // __PISOCANCPM_H