summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Mladenovski <viktor.mladenovski@seavus.com>2011-06-21 17:51:15 +0200
committerViktor Mladenovski <viktor.mladenovski@seavus.com>2011-06-21 17:51:15 +0200
commit12da7d3751c8b7bd088587c8323123019680efff (patch)
tree6e1e3f6a65e260ba8ffe2e1336a0cc4f0be145ba
parentf7e95217e936da34d7124aaced590692eb515923 (diff)
Flashing procedure stops at different stages
Adds fix for retransmission in LCM transport layer ST-Ericsson ID: 325725 ST-Ericsson FOSS-OUT ID: STETL-FOSS-OUT-10204 Change-Id: Ie6b32dcf6bf7b3023237920204e3c55ac0624a79
-rw-r--r--lcmodule/source/LCM.rc4
-rw-r--r--lcmodule/source/cnh1605204_ldr_transport_layer/source/bulk_protocol.c32
-rw-r--r--lcmodule/source/cnh1605205_ldr_network_layer/source/a2_header.c4
-rw-r--r--lcmodule/source/cnh1605205_ldr_network_layer/source/protrom_header.c12
-rw-r--r--lcmodule/source/cnh1605205_ldr_network_layer/source/r15_header.c8
-rw-r--r--lcmodule/source/cnh1605205_ldr_network_layer/source/r15_network_layer.c6
-rw-r--r--lcmodule/source/cnh1606344_ldr_communication_module/config/ces_commands_c.xsl8
-rw-r--r--lcmodule/source/cnh1606344_ldr_communication_module/source/r15_family.c4
-rwxr-xr-xlcmodule/win_binaries/LCM.dllbin81920 -> 81920 bytes
-rw-r--r--source/LCDriver.rc4
-rw-r--r--source/config/commands_h.xsl2
-rw-r--r--source/utilities/BulkHandler.h5
-rw-r--r--source/utilities/CaptiveThreadObject.cpp3
-rw-r--r--source/utilities/MemMappedFile.cpp10
-rw-r--r--source/utilities/MemMappedFile.h2
-rwxr-xr-xwin_binaries/LCDriver_CNH1606432.dllbin172032 -> 172032 bytes
16 files changed, 62 insertions, 42 deletions
diff --git a/lcmodule/source/LCM.rc b/lcmodule/source/LCM.rc
index 15b65cb..0ec9c41 100644
--- a/lcmodule/source/LCM.rc
+++ b/lcmodule/source/LCM.rc
@@ -69,7 +69,7 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
- VALUE "Comments", "Build date: 2011-05-18"
+ VALUE "Comments", "Build date: 2011-05-30"
VALUE "CompanyName", "ST Ericsson AB"
VALUE "FileDescription", "LCM Dynamic Link Library"
VALUE "FileVersion", "1,0,0,1"
@@ -78,7 +78,7 @@ BEGIN
VALUE "OriginalFilename", "LCM.dll"
VALUE "PrivateBuild", "http://gerrit.lud.stericsson.com/gerrit/21155"
VALUE "ProductName", "CXA1104507 Loader Communication Module"
- VALUE "ProductVersion", "Test Version"
+ VALUE "ProductVersion", "P1L"
END
END
BLOCK "VarFileInfo"
diff --git a/lcmodule/source/cnh1605204_ldr_transport_layer/source/bulk_protocol.c b/lcmodule/source/cnh1605204_ldr_transport_layer/source/bulk_protocol.c
index 173bb5b..5727d4e 100644
--- a/lcmodule/source/cnh1605204_ldr_transport_layer/source/bulk_protocol.c
+++ b/lcmodule/source/cnh1605204_ldr_transport_layer/source/bulk_protocol.c
@@ -50,7 +50,16 @@
extern Measurement_t *Measurement_p;
#endif
+typedef struct {
+ TL_BulkVectorList_t *BulkVector_p;
+ uint32 ChunkId;
+ uint8* ChunksList_p;
+} TL_RetransmissionRequest_t;
+
+static TL_RetransmissionRequest_t RetransmissionRequest;
+
static void R15_Bulk_ReadChunkCallBack(Communication_t *Communication_p, const void *const Timer_p, const void *const Data_p);
+static void R15_Bulk_ReadDataChunkCallBack(Communication_t *Communication_p, const void *const Timer_p, const void *const Data_p);
static void R15_Bulk_RetransmitChunks_CallBack(const Communication_t *const Communication_p, const void *const Timer_p, const void *const Data_p);
static ErrorCode_e R15_Bulk_Process_Read(Communication_t *Communication_p, TL_BulkVectorList_t *BulkVector_p, PacketMeta_t *Packet_p);
static ErrorCode_e R15_Bulk_SendReadRequest(Communication_t *Communication_p, TL_BulkVectorList_t *BulkVector_p, uint32 Chunks, void *ChunksList_p, void *CallBack_p);
@@ -763,16 +772,14 @@ static ErrorCode_e R15_Bulk_Process_Read(Communication_t *Communication_p, TL_Bu
} else if (VECTOR_MISSING_CHUNK == ChunkReceivedStatus) {
ReturnValue = R15_Bulk_SendReadRequest(Communication_p, BulkVector_p, ChunkId, ChunksList, NULL);
} else { // Chunks are received in order
- R15_TRANSPORT(Communication_p)->BulkHandle.TimerKey = R15_Bulk_GetTimerChunkRetransmision(Communication_p, R15_TIMEOUTS(Communication_p)->TBDR, (HandleFunction_t)R15_Bulk_ReadChunkCallBack);
+ RetransmissionRequest.BulkVector_p = BulkVector_p;
+ RetransmissionRequest.ChunkId = ChunkId;
+ RetransmissionRequest.ChunksList_p = ChunksList;
+ R15_TRANSPORT(Communication_p)->BulkHandle.TimerKey = R15_Bulk_GetTimerChunkRetransmision(Communication_p, R15_TIMEOUTS(Communication_p)->TBDR, (HandleFunction_t)R15_Bulk_ReadDataChunkCallBack);
}
break;
- case SEND_BULK_ACK: //TODO: check this state. look like unused state!!!
- R15_Bulk_GetListOfReceivedChunks(BulkVector_p, &ChunkId, ChunksList);
- ReturnValue = R15_Bulk_SendReadRequest(Communication_p, BulkVector_p, ChunkId, ChunksList, NULL);
- break;
-
default:
BulkVector_p->State = BULK_IDLE_STATE;
ReturnValue = E_INVALID_BULK_PROTOCOL_STATE;
@@ -921,11 +928,6 @@ static ErrorCode_e R15_Bulk_SendReadRequest(Communication_t *Communication_p, TL
} else {
Param.Time = R15_TIMEOUTS(Communication_p)->TBDR; // Receiving chunks
- if (Chunks != 0) {
- VERIFY(NULL != ChunksList_p, E_INVALID_INPUT_PARAMETERS);
- Param.Payload_p = ChunksList_p;
- }
-
VERIFY(NULL != CallBack_p, E_INVALID_INPUT_PARAMETERS);
//lint --e(611)
Param.TimerCallBackFn_p = (HandleFunction_t)CallBack_p;
@@ -1062,6 +1064,11 @@ static void R15_Bulk_ReadChunkCallBack(Communication_t *Communication_p, const v
(void)QUEUE((Communication_p), FifoEnqueue_Fn)(OBJECT_QUEUE(Communication_p), Communication_p->Outbound_p, (void *)Data_p);
}
+static void R15_Bulk_ReadDataChunkCallBack(Communication_t *Communication_p, const void *const Timer_p, const void *const Data_p)
+{
+ (void)R15_Bulk_SendReadRequest(Communication_p, RetransmissionRequest.BulkVector_p, RetransmissionRequest.ChunkId, RetransmissionRequest.ChunksList_p, NULL);
+}
+
static void R15_Bulk_RetransmitChunks_CallBack(const Communication_t *const Communication_p, const void *const Timer_p, const void *const Data_p)
{
/* set all chunks for retransmision . Max retransmision is 3. */
@@ -1122,8 +1129,7 @@ static TL_BulkVectorStatus_t R15_Bulk_GetVectorStatus(TL_BulkVectorList_t *BulkV
for (ChunkCounter = 0; ChunkCounter < BulkVector_p->Buffers; ChunkCounter++) {
Packet_p = BulkVector_p->Entries[ChunkCounter].Buffer_p;
- if (Packet_p == NULL ||
- !(CHECK_PACKET_FLAGS(Packet_p, BUF_ACK_READY) || CHECK_PACKET_FLAGS(Packet_p, BUF_ACKNOWLEDGED))) {
+ if (Packet_p == NULL || !(CHECK_PACKET_FLAGS(Packet_p, BUF_ACK_READY) || CHECK_PACKET_FLAGS(Packet_p, BUF_ACKNOWLEDGED))) {
Status = VECTOR_NOT_COMPLETE;
} else {
if (Status == VECTOR_NOT_COMPLETE) {
diff --git a/lcmodule/source/cnh1605205_ldr_network_layer/source/a2_header.c b/lcmodule/source/cnh1605205_ldr_network_layer/source/a2_header.c
index 7b7631b..fd48503 100644
--- a/lcmodule/source/cnh1605205_ldr_network_layer/source/a2_header.c
+++ b/lcmodule/source/cnh1605205_ldr_network_layer/source/a2_header.c
@@ -163,8 +163,8 @@ boolean A2_IsReceivedHeader(A2_Inbound_t *In_p)
return TRUE;
} else {
In_p->ReqData = StartHeaderInBuffer;
- TmpPointer_p = (uint8 *)((uint32)In_p->Target_p + StartHeaderInBuffer);
- memcpy(In_p->Target_p, (uint8 *)TmpPointer_p, A2_HEADER_LENGTH - StartHeaderInBuffer);
+ TmpPointer_p = In_p->Target_p + StartHeaderInBuffer;
+ memcpy(In_p->Target_p, TmpPointer_p, A2_HEADER_LENGTH - StartHeaderInBuffer);
In_p->ReqBuffOffset = A2_HEADER_LENGTH - StartHeaderInBuffer;
}
} else {
diff --git a/lcmodule/source/cnh1605205_ldr_network_layer/source/protrom_header.c b/lcmodule/source/cnh1605205_ldr_network_layer/source/protrom_header.c
index eab4a6a..8ac6f7b 100644
--- a/lcmodule/source/cnh1605205_ldr_network_layer/source/protrom_header.c
+++ b/lcmodule/source/cnh1605205_ldr_network_layer/source/protrom_header.c
@@ -100,6 +100,7 @@ uint32 Protrom_GetPacketLength(const Protrom_Header_t *Header_p)
boolean Protrom_IsValidHeader(const void *Data_p)
{
uint8 *Temp_p = (uint8 *)Data_p;
+ uint16 ProtromVal = 0;
if (PROTROM_HEADER_PATTERN != *Temp_p) {
return FALSE;
@@ -121,7 +122,8 @@ boolean Protrom_IsValidHeader(const void *Data_p)
return FALSE;
}
- if (*(uint16 *)(Temp_p + 5) < 1) {
+ ProtromVal = (Temp_p[6] << 8) | Temp_p[5];
+ if (ProtromVal < 1) {
return FALSE;
}
@@ -148,8 +150,8 @@ boolean Protrom_IsReceivedHeader(Protrom_Inbound_t *In_p)
if (PROTROM_HEADER_PATTERN_CANDIDATE == Res) {
/* call for receiving the rest bytes in header */
In_p->ReqData = StartHeaderInBuffer + PROTROM_HEADER_LENGTH - In_p->RecData;
- TmpPointer_p = (uint8 *)((uint32)In_p->Target_p + StartHeaderInBuffer);
- memcpy(In_p->Target_p, (uint8 *)TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
+ TmpPointer_p = In_p->Target_p + StartHeaderInBuffer;
+ memcpy(In_p->Target_p, TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
In_p->ReqBuffOffset = In_p->RecData - StartHeaderInBuffer;
} else {
if (PROTROM_HEADER_PATTERN_MATCH == Res) {
@@ -158,8 +160,8 @@ boolean Protrom_IsReceivedHeader(Protrom_Inbound_t *In_p)
return TRUE;
} else {
In_p->ReqData = StartHeaderInBuffer + PROTROM_HEADER_LENGTH - In_p->RecData;
- TmpPointer_p = (uint8 *)((uint32)In_p->Target_p + StartHeaderInBuffer);
- memcpy(In_p->Target_p, (uint8 *)TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
+ TmpPointer_p = In_p->Target_p + StartHeaderInBuffer;
+ memcpy(In_p->Target_p, TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
In_p->ReqBuffOffset = In_p->RecData - StartHeaderInBuffer;
}
} else {
diff --git a/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_header.c b/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_header.c
index 8058506..be504e5 100644
--- a/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_header.c
+++ b/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_header.c
@@ -209,8 +209,8 @@ boolean R15_IsReceivedHeader(R15_Inbound_t *In_p)
if (HEADER_PATTERN_CANDIDATE == Res) {
/* call for receiving the rest bytes in header */
In_p->ReqData = StartHeaderInBuffer + ALIGNED_HEADER_LENGTH - In_p->RecData;
- TmpPointer_p = (uint8 *)((uint32)In_p->Target_p + StartHeaderInBuffer);
- memcpy(In_p->Target_p, (uint8 *)TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
+ TmpPointer_p = In_p->Target_p + StartHeaderInBuffer;
+ memcpy(In_p->Target_p, TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
In_p->ReqBuffOffset = In_p->RecData - StartHeaderInBuffer;
} else {
if (HEADER_PATTERN_MATCH == Res) {
@@ -219,8 +219,8 @@ boolean R15_IsReceivedHeader(R15_Inbound_t *In_p)
return TRUE;
} else {
In_p->ReqData = StartHeaderInBuffer + ALIGNED_HEADER_LENGTH - In_p->RecData;
- TmpPointer_p = (uint8 *)((uint32)In_p->Target_p + StartHeaderInBuffer);
- memcpy(In_p->Target_p, (uint8 *)TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
+ TmpPointer_p = In_p->Target_p + StartHeaderInBuffer;
+ memcpy(In_p->Target_p, TmpPointer_p, In_p->RecData - StartHeaderInBuffer);
In_p->ReqBuffOffset = In_p->RecData - StartHeaderInBuffer;
}
} else {
diff --git a/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_network_layer.c b/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_network_layer.c
index 3b3a2fc..bc18821 100644
--- a/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_network_layer.c
+++ b/lcmodule/source/cnh1605205_ldr_network_layer/source/r15_network_layer.c
@@ -40,7 +40,7 @@
extern Measurement_t *Measurement_p;
#endif
-static PacketMeta_t PacketMetaInfo[COMMAND_BUFFER_COUNT + BULK_BUFFER_COUNT] = {0}; /* Packet Meta Info vector*/
+static PacketMeta_t PacketMetaInfo[COMMAND_BUFFER_COUNT + BULK_BUFFER_COUNT] ; /* Packet Meta Info vector*/
/*******************************************************************************
* Declaration of file local functions
@@ -429,7 +429,7 @@ uint32 R15_Network_CreateUniqueKey(const PacketMeta_t *const Packet_p, const uin
uint32 Key = Packet_p->Header.Protocol;
if (Key == PROTO_COMMAND) {
- return((Key << 16) | *(Packet_p->ExtendedHeader_p) & MASK_CLR_STATE);
+ return((Key << 16) | (*(Packet_p->ExtendedHeader_p) & MASK_CLR_STATE));
} else {
return ((Key << 16) | ((*(Packet_p->ExtendedHeader_p) & 0x00FF) << 8) | ExternalKey);
}
@@ -685,7 +685,7 @@ static ErrorCode_e R15_Network_ReceiveExtendedHeader(Communication_t *Communicat
SET_INBOUND(In_p, RECEIVE_PAYLOAD, Aligned_Size);
} else {
-#ifdef DISABLE_SECURITY
+#ifdef SKIP_PAYLOAD_VERIFICATION
SET_PACKET_FLAGS(In_p->Packet_p, PACKET_RX_STATE_MASK, BUF_RX_READY);
(void)QUEUE(Communication_p, FifoEnqueue_Fn)(OBJECT_QUEUE(Communication_p), Communication_p->Inbound_p, In_p->Packet_p);
#else
diff --git a/lcmodule/source/cnh1606344_ldr_communication_module/config/ces_commands_c.xsl b/lcmodule/source/cnh1606344_ldr_communication_module/config/ces_commands_c.xsl
index 4ab37c4..20025c4 100644
--- a/lcmodule/source/cnh1606344_ldr_communication_module/config/ces_commands_c.xsl
+++ b/lcmodule/source/cnh1606344_ldr_communication_module/config/ces_commands_c.xsl
@@ -17,13 +17,19 @@
<variable name="group" select="../@number" />
<variable name="command" select="@number" />
<if test='$target="lcm" or $supported_commands/group[@number=$group]/command[@number=$command]'>
-<if test='contains(@supportedcmdtype, "longrunning")'>
+<if test='contains(@supportedcmdtype, "longrunning")'>
+<if test='$group=2 and $command=5'>
+#ifdef DISABLE_SECURITY
+</if>
<text> </text>{
<text> </text>NULL,
<text> </text><value-of select="../interface/@name"/>_<value-of select="interface/@name"/>Repeat,
<text> </text><call-template name="commandid"/>,
<text> </text>1
<text> </text>},
+<if test='$group=2 and $command=5'>
+#endif
+</if>
</if>
</if>
</template>
diff --git a/lcmodule/source/cnh1606344_ldr_communication_module/source/r15_family.c b/lcmodule/source/cnh1606344_ldr_communication_module/source/r15_family.c
index baf1d7a..bf9c24a 100644
--- a/lcmodule/source/cnh1606344_ldr_communication_module/source/r15_family.c
+++ b/lcmodule/source/cnh1606344_ldr_communication_module/source/r15_family.c
@@ -45,11 +45,13 @@ ErrorCode_e R15_Family_Init(Communication_t *Communication_p)
#ifndef CFG_ENABLE_LOADER_TYPE
Communication_p->CurrentFamilyHash = HASH_NONE;
#else
-#ifdef DISABLE_SECURITY
+
+#ifdef SKIP_PAYLOAD_VERIFICATION
Communication_p->CurrentFamilyHash = HASH_NONE;
#else
Communication_p->CurrentFamilyHash = HASH_SHA256;
#endif
+
#endif
R15_NETWORK(Communication_p)->Inbound.StopTransfer = FALSE;
diff --git a/lcmodule/win_binaries/LCM.dll b/lcmodule/win_binaries/LCM.dll
index fdc0ab1..a4d916b 100755
--- a/lcmodule/win_binaries/LCM.dll
+++ b/lcmodule/win_binaries/LCM.dll
Binary files differ
diff --git a/source/LCDriver.rc b/source/LCDriver.rc
index ec7b73a..de492cd 100644
--- a/source/LCDriver.rc
+++ b/source/LCDriver.rc
@@ -81,7 +81,7 @@ BEGIN
BEGIN
BLOCK "000904b0"
BEGIN
- VALUE "Comments", "Build date: 2011-05-18"
+ VALUE "Comments", "Build date: 2011-05-30"
VALUE "CompanyName", "STEricsson AB"
VALUE "FileDescription", "LCDriver Dynamic Link Library"
VALUE "FileVersion", "1, 0, 0, 1"
@@ -90,7 +90,7 @@ BEGIN
VALUE "OriginalFilename", "LCDriver_CNH1606432.dll"
VALUE "PrivateBuild", "http://gerrit.lud.stericsson.com/gerrit/21155"
VALUE "ProductName", "CXC 173 0865, LCDriver DLL"
- VALUE "ProductVersion", "Test Version"
+ VALUE "ProductVersion", "P1K"
END
END
BLOCK "VarFileInfo"
diff --git a/source/config/commands_h.xsl b/source/config/commands_h.xsl
index 36a2356..431a046 100644
--- a/source/config/commands_h.xsl
+++ b/source/config/commands_h.xsl
@@ -39,9 +39,9 @@ public:
}
<apply-templates select="group"/>
protected:
- CLCDriverMethods* lcdMethods_;
CmdResult* cmdResult_;
LcmInterface* lcmInterface_;
+ CLCDriverMethods* lcdMethods_;
};
#endif /* _COMMANDS_H_ */
diff --git a/source/utilities/BulkHandler.h b/source/utilities/BulkHandler.h
index 71147ab..b441a67 100644
--- a/source/utilities/BulkHandler.h
+++ b/source/utilities/BulkHandler.h
@@ -56,14 +56,15 @@ public:
void HandleCommandRequest(uint16 session, uint32 chunkSize, uint64 offset, uint32 length, bool acknowledge);
private:
CLCDriverMethods *m_Methods;
+ CSemaphoreQueue m_ReceiveQueue;
Buffers *m_pBuffers;
LcmInterface *m_pLcmInterface;
Logger *m_pLogger;
BulkState m_State;
+ CThreadWrapper *m_pFileWriteThread;
TL_BulkVectorList_t *m_pBulkVector;
std::string m_sFilePath;
- CSemaphoreQueue m_ReceiveQueue;
- CThreadWrapper *m_pFileWriteThread;
+
private:
void HandleReadRequest(uint16 session, uint32 chunkSize, uint64 offset, uint32 length);
void HandleWriteRequest(uint16 session, uint32 chunkSize, uint64 offset, uint32 length);
diff --git a/source/utilities/CaptiveThreadObject.cpp b/source/utilities/CaptiveThreadObject.cpp
index e9eb472..052bbce 100644
--- a/source/utilities/CaptiveThreadObject.cpp
+++ b/source/utilities/CaptiveThreadObject.cpp
@@ -17,11 +17,10 @@
CCaptiveThreadObject::CCaptiveThreadObject()
: IsDying(0),
-#pragma warning(disable: 4355) // 'this' used before initialized but ok as thread starts in inactive state
Thread(ThreadEntry, this)
{
}
-#pragma warning(default: 4355)
+
CCaptiveThreadObject::~CCaptiveThreadObject()
{
diff --git a/source/utilities/MemMappedFile.cpp b/source/utilities/MemMappedFile.cpp
index 287c5b9..8d5905d 100644
--- a/source/utilities/MemMappedFile.cpp
+++ b/source/utilities/MemMappedFile.cpp
@@ -71,7 +71,10 @@ int MemMappedFile::LoadFileData(const char *path)
return FILE_OPENING_ERROR;
}
- size_ = ::GetFileSize(handle_, NULL);
+ uint64 SizeHigh = 0;
+
+ size_ = ::GetFileSize(handle_, (LPDWORD)&SizeHigh);
+ size_ = (SizeHigh << 32) | size_;
if (0 == size_) {
return 0;
@@ -113,8 +116,9 @@ int MemMappedFile::LoadFileData(const char *path)
size_ = fileStat.st_size;
- mappedData_ = static_cast<uint8 *>(mmap(0, size_, PROT_READ, MAP_PRIVATE | MAP_POPULATE, descriptor_, 0));
-
+ /* alway return MAP_FAILED to prevent memory consumption */
+ mappedData_ = (uint8 *)MAP_FAILED; //static_cast<uint8 *>(mmap(0, size_, PROT_READ, MAP_PRIVATE /*| MAP_POPULATE*/, descriptor_, 0));
+
if (MAP_FAILED != mappedData_) {
isMapped_ = true;
} else {
diff --git a/source/utilities/MemMappedFile.h b/source/utilities/MemMappedFile.h
index 8cc63f5..7995365 100644
--- a/source/utilities/MemMappedFile.h
+++ b/source/utilities/MemMappedFile.h
@@ -27,9 +27,9 @@ private:
std::string path_;
uint64 size_;
bool isMapped_;
- uint32 alignmentLength_;
uint8 *mappedData_;
int error_;
+ uint32 alignmentLength_;
#ifdef _WIN32
HANDLE handle_;
HANDLE memmap_;
diff --git a/win_binaries/LCDriver_CNH1606432.dll b/win_binaries/LCDriver_CNH1606432.dll
index 826f5f5..eacaa01 100755
--- a/win_binaries/LCDriver_CNH1606432.dll
+++ b/win_binaries/LCDriver_CNH1606432.dll
Binary files differ