97 * @param driver_name String containing driver's dynamic library name |
97 * @param driver_name String containing driver's dynamic library name |
98 * @return Library handle |
98 * @return Library handle |
99 */ |
99 */ |
100 LIB_HANDLE LoadCanDriver(LPCSTR driver_name) |
100 LIB_HANDLE LoadCanDriver(LPCSTR driver_name) |
101 { |
101 { |
102 // driver module handle |
102 // driver module handle |
103 LIB_HANDLE handle = NULL; |
103 LIB_HANDLE handle = NULL; |
104 |
104 |
105 #ifndef NOT_USE_DYNAMIC_LOADING |
105 #ifndef NOT_USE_DYNAMIC_LOADING |
106 if(handle == NULL) |
106 handle = LoadLibrary(driver_name); |
107 { |
107 |
108 handle = LoadLibrary(driver_name); |
108 if (!handle) |
109 } |
109 { |
110 |
110 fprintf (stderr, "LoadLibrary error : %d\n", GetLastError()); |
111 if (!handle) |
111 return NULL; |
112 { |
112 } |
113 fprintf (stderr, "%d\n", GetLastError()); |
113 |
114 return NULL; |
114 m_canReceive = (CANRECEIVE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canReceive_driver")); |
115 } |
115 m_canSend = (CANSEND_DRIVER_PROC)GetProcAddress(handle, myTEXT("canSend_driver")); |
116 |
116 m_canOpen = (CANOPEN_DRIVER_PROC)GetProcAddress(handle, myTEXT("canOpen_driver")); |
117 m_canReceive = (CANRECEIVE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canReceive_driver")); |
117 m_canClose = (CANCLOSE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canClose_driver")); |
118 m_canSend = (CANSEND_DRIVER_PROC)GetProcAddress(handle, myTEXT("canSend_driver")); |
118 m_canChangeBaudRate = (CANCHANGEBAUDRATE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canChangeBaudRate_driver")); |
119 m_canOpen = (CANOPEN_DRIVER_PROC)GetProcAddress(handle, myTEXT("canOpen_driver")); |
119 |
120 m_canClose = (CANCLOSE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canClose_driver")); |
120 if(m_canReceive==NULL || m_canSend==NULL || m_canOpen==NULL || m_canClose==NULL || m_canChangeBaudRate==NULL) |
121 m_canChangeBaudRate = (CANCHANGEBAUDRATE_DRIVER_PROC)GetProcAddress(handle, myTEXT("canChangeBaudRate_driver")); |
121 { |
122 |
122 m_canReceive = NULL; |
123 if(m_canReceive==NULL || m_canSend==NULL || m_canOpen==NULL || m_canClose==NULL || m_canChangeBaudRate==NULL) |
123 m_canSend = NULL; |
124 { |
124 m_canOpen = NULL; |
125 m_canReceive = NULL; |
125 m_canClose = NULL; |
126 m_canSend = NULL; |
126 m_canChangeBaudRate = NULL; |
127 m_canOpen = NULL; |
127 FreeLibrary(handle); |
128 m_canClose = NULL; |
128 fprintf (stderr, "GetProc error : %d\n", GetLastError()); |
129 m_canChangeBaudRate = NULL; |
129 return NULL; |
130 FreeLibrary(handle); |
130 } |
131 handle = NULL; |
|
132 } |
|
133 #else |
131 #else |
134 //compiled in... |
132 //compiled in... |
135 handle = 1; //TODO: remove this hack |
133 handle = 1; //TODO: remove this hack |
136 |
134 |
137 m_canReceive = canReceive_driver; |
135 m_canReceive = canReceive_driver; |
138 m_canSend = canSend_driver; |
136 m_canSend = canSend_driver; |
139 m_canOpen = canOpen_driver; |
137 m_canOpen = canOpen_driver; |
140 m_canClose = canClose_driver; |
138 m_canClose = canClose_driver; |
141 m_canChangeBaudRate = canChangeBaudRate_driver; |
139 m_canChangeBaudRate = canChangeBaudRate_driver; |
142 #endif |
140 #endif |
143 |
141 |
144 |
142 |
145 return handle; |
143 return handle; |
146 } |
144 } |
147 |
145 |
148 /***************************************************************************/ |
146 /***************************************************************************/ |
149 UNS8 canSend(CAN_PORT port, Message *m) |
147 UNS8 canSend(CAN_PORT port, Message *m) |
150 { |
148 { |