From 7d3780708fbc76ff0867280ef1a17ad1bbf38fc7 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Fri, 23 Oct 2020 13:18:31 +0000 Subject: [PATCH] Refs #1117. Improved the Kvaser LeafLight CAN driver in LibOpenBLT, based on feedback from Kvaser's code review. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@807 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../port/windows/canif/kvaser/leaflight.c | 49 ++++++++++++++++-- Host/libopenblt.dll | Bin 194048 -> 194048 bytes 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/Host/Source/LibOpenBLT/port/windows/canif/kvaser/leaflight.c b/Host/Source/LibOpenBLT/port/windows/canif/kvaser/leaflight.c index 62d82ed5..1aaa8a8a 100644 --- a/Host/Source/LibOpenBLT/port/windows/canif/kvaser/leaflight.c +++ b/Host/Source/LibOpenBLT/port/windows/canif/kvaser/leaflight.c @@ -137,6 +137,9 @@ static HINSTANCE leafLightDllHandle; /** \brief Handle to the CAN channel. */ static CanHandle leafLightCanHandle; +/** \brief Handle to the CAN channel for usage in the CAN reception thread. */ +static CanHandle leafLightRxCanHandle; + /** \brief Function pointer to the Kvaser CANLIB canInitializeLibrary function. */ static tLeafLightLibFuncInitializeLibrary leafLightLibFuncInitializeLibraryPtr; @@ -215,6 +218,7 @@ static void LeafLightInit(tCanSettings const * settings) leafLightRxThreadHandle = NULL; leafLightDllHandle = NULL; leafLightCanHandle = -1; + leafLightRxCanHandle = -1; /* Reset library function pointers. */ leafLightLibFuncInitializeLibraryPtr = NULL; leafLightLibFuncUnloadLibraryPtr = NULL; @@ -360,6 +364,7 @@ static bool LeafLightConnect(void) /* Invalidate handles. */ leafLightCanHandle = -1; + leafLightRxCanHandle = -1; leafLightTerminateEvent = NULL; leafLightCanEvent = NULL; leafLightRxThreadHandle = NULL; @@ -457,11 +462,30 @@ static bool LeafLightConnect(void) result = false; } } + /* Open the CAN channel and obtain its handle, which will only be used in the + * reception thread. CAN channel handles are not thread safe and therefore a + * second handle is needed. Note that no init access is needed for this + * handle. + */ + leafLightRxCanHandle = LeafLightLibFuncOpenChannel(0, canOPEN_NO_INIT_ACCESS); + /* Validate the handle. */ + if (leafLightRxCanHandle < 0) + { + result = false; + } + /* Go on the bus. */ + if (result) + { + if (LeafLightLibFuncBusOn(leafLightRxCanHandle) != canOK) + { + result = false; + } + } /* Obtain the handle for CAN events. */ if (result) { leafLightCanEvent = NULL; - if (LeafLightLibFuncIoCtl(leafLightCanHandle, canIOCTL_GET_EVENTHANDLE, + if (LeafLightLibFuncIoCtl(leafLightRxCanHandle, canIOCTL_GET_EVENTHANDLE, &leafLightCanEvent, sizeof(leafLightCanEvent)) != canOK) { result = false; @@ -503,6 +527,13 @@ static bool LeafLightConnect(void) (void)LeafLightLibFuncClose(leafLightCanHandle); leafLightCanHandle = -1; } + if (leafLightRxCanHandle >= 0) + { + /* Go off the bus and close the channel. */ + (void)LeafLightLibFuncBusOff(leafLightRxCanHandle); + (void)LeafLightLibFuncClose(leafLightRxCanHandle); + leafLightRxCanHandle = -1; + } if (leafLightTerminateEvent != NULL) { /* Close the event handle. */ @@ -545,6 +576,12 @@ static void LeafLightDisconnect(void) (void)LeafLightLibFuncClose(leafLightCanHandle); leafLightCanHandle = -1; } + if (leafLightRxCanHandle >= 0) + { + (void)LeafLightLibFuncBusOff(leafLightRxCanHandle); + (void)LeafLightLibFuncClose(leafLightRxCanHandle); + leafLightRxCanHandle = -1; + } } /*** end of LeafLightDisconnect ***/ @@ -713,12 +750,12 @@ static DWORD WINAPI LeafLightReceptionThread(LPVOID pv) /* CAN reception event. */ case WAIT_OBJECT_0 + 0: /*lint !e835 */ /* Only read out the events when the handle is valid. */ - if (leafLightCanHandle >= 0) + if (leafLightRxCanHandle >= 0) { /* Empty out the event queue. */ do { - rxStatus = LeafLightLibFuncRead(leafLightCanHandle, &rxId, &rxMsg.data[0], + rxStatus = LeafLightLibFuncRead(leafLightRxCanHandle, &rxId, &rxMsg.data[0], &rxDlc, &rxFlags, &rxTime); /* Only process the result if a message was read. */ if (rxStatus == canOK) @@ -776,8 +813,9 @@ static DWORD WINAPI LeafLightReceptionThread(LPVOID pv) ****************************************************************************************/ static void LeafLightLibLoadDll(void) { - /* Reset the channel handle. */ + /* Reset the channel handles. */ leafLightCanHandle = -1; + leafLightRxCanHandle = -1; /* Start out by resetting the API function pointers. */ leafLightLibFuncInitializeLibraryPtr = NULL; leafLightLibFuncUnloadLibraryPtr = NULL; @@ -852,8 +890,9 @@ static void LeafLightLibUnloadDll(void) leafLightLibFuncReadStatusPtr = NULL; leafLightLibFuncBusOffPtr = NULL; leafLightLibFuncClosePtr = NULL; - /* Reset the channel handle. */ + /* Reset the channel handles. */ leafLightCanHandle = -1; + leafLightRxCanHandle = -1; /* Unload the library and invalidate its handle. */ if (leafLightDllHandle != NULL) { diff --git a/Host/libopenblt.dll b/Host/libopenblt.dll index 4fdbe0c2d3d24c57013a55e8fb3f7052b6e5fc20..fe432303dff649938aa4b810842a6977f88b6751 100644 GIT binary patch delta 30134 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 delta 30044 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