From 3c7d151df74e1ac77aff0d50762b5b93929e37aa Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Tue, 30 May 2023 14:40:21 +0200 Subject: [PATCH 01/50] Update build.yml --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cec9c3d..0fc3fb8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,6 +2,8 @@ name: Build Binarys on: push: + branches: + - dev paths: - 'cpp/**' - '.github/workflows/build.yml' From 9e12138cd4aad22da6ded36a42ca86538e0894e5 Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Tue, 30 May 2023 14:40:44 +0200 Subject: [PATCH 02/50] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0fc3fb8..5f3b840 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build Binarys +name: Build Binaries on: push: From cec94090d3191986728f4f2a8760e0187d68b360 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 May 2023 12:41:52 +0000 Subject: [PATCH 03/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 19456 -> 19456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 593c541983a26dd80b51912b3d3d0338e2ab87ab..561eed628c42db00d228a067ca8859a568e99ac0 100644 GIT binary patch delta 24 dcmZpe!Pqc^aRDO}%lpktj7_>Ax=pW2764`A2q6Ff delta 24 dcmZpe!Pqc^aRDRK6~@g>j7_>Ax=pW2764@{2ju_& From ebe34ee6923fe0ff535ee9d0b9de3ae1e354ff6f Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Wed, 31 May 2023 13:15:56 +0200 Subject: [PATCH 04/50] Update serial_windows.cpp --- cpp/src/serial_windows.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 1044cbb..6f00387 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -117,7 +117,7 @@ auto serialRead( } timeouts.ReadIntervalTimeout = timeout; - timeouts.ReadTotalTimeoutConstant = timeout; + timeouts.ReadTotalTimeoutConstant = 1; timeouts.ReadTotalTimeoutMultiplier = multiplier; // Error if timeout set fails @@ -152,7 +152,7 @@ auto serialReadUntil( } timeouts.ReadIntervalTimeout = timeout; - timeouts.ReadTotalTimeoutConstant = timeout; + timeouts.ReadTotalTimeoutConstant = 1; timeouts.ReadTotalTimeoutMultiplier = multiplier; // Error if timeout set fails From 34e75fb5873ad353f29a668f5ec50fa860c63cca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 31 May 2023 11:19:15 +0000 Subject: [PATCH 05/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 19456 -> 19456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 561eed628c42db00d228a067ca8859a568e99ac0..5b99f09ae46d8e1175a39682f6a4a708aeccf736 100644 GIT binary patch delta 446 zcmZpe!Pqc^aRDQSb93JeUb2TH|yJ%0Wd zl>!PGAMogoQ3>#9KH?C6*rS_Q4k+f+>!V^|e88m}C~&>gMa94aNGSXleIyUl{P(}; zT?aJH-9SzMMb80+yFpsIV>n>OPL32QiagHR43uJI06V4v$owzr2Qg0o>=;F$knw?+ zQ<)hUJUZv7+yE-{=oQ_p2;y#0nE~Xw0^Qnc`qB>Qz|J))6F>^O&%NNBtSBnX$T-tU?(OvrAm*4rHN3(4OP(;9k-uhg>-Dk;ep6szc;dyt0CYY>0+9V}v#P1SfM_I; Sc>^d67J@4IwmH*vIvW7-Jd<(& delta 482 zcmZpe!Pqc^aRDPU%lp#J%#7!SqFp*!>m3;wTsnD6fYg6cF9imM)&r$ty&gaRi^>9p zj1PEp$EXB&G#_z@KkU)Xs|XbH>Ge@DFh1bY4HUTE>7rub0VEXui$0ZyY5x0P^uc5U z5izlg4h#(4AQcEh&YU?jIZ~vk9%ywNP!?!)HIVu*8VJ!X0Jd5MC}e!#HcN=X9=7nE+DIeeMO%*Z=?dx5e&v?SAjlnS0#T z`W=5S3nK%AWAhnCpU&F<{NV>&I#Unx3%XAB73Hb-{C~iy!G@io^c&D89=*QrUo3g| z|G!6fD7#N@?R%f@()S+CzXUwGS$l!@0L}O4F8%Mz@BGiB*|rHNBH+RA%$o#~>h!(t zVf~@J)Ikt+s{o_4)nHo?yd3=B`a7#M*5W=H_CKW|nw)fW&A12S&_ Qg~38lC7(BEx=v>U0QKdlNB{r; From 10d02a3750ba61111baba1286fea890a7721817c Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Wed, 31 May 2023 14:47:12 +0200 Subject: [PATCH 06/50] Update serial_windows.cpp --- cpp/src/serial_windows.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 6f00387..3f2dcb8 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -117,7 +117,7 @@ auto serialRead( } timeouts.ReadIntervalTimeout = timeout; - timeouts.ReadTotalTimeoutConstant = 1; + timeouts.ReadTotalTimeoutConstant = multiplier; timeouts.ReadTotalTimeoutMultiplier = multiplier; // Error if timeout set fails @@ -152,7 +152,7 @@ auto serialReadUntil( } timeouts.ReadIntervalTimeout = timeout; - timeouts.ReadTotalTimeoutConstant = 1; + timeouts.ReadTotalTimeoutConstant = multiplier; timeouts.ReadTotalTimeoutMultiplier = multiplier; // Error if timeout set fails From df896500b3c6ec08d1477bee6b1081f2812af1e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 31 May 2023 12:51:05 +0000 Subject: [PATCH 07/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 19456 -> 19456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 5b99f09ae46d8e1175a39682f6a4a708aeccf736..3c11ed4f852caaed331831c58ab5b953b32d799c 100644 GIT binary patch delta 480 zcmZpe!Pqc^aRDRKTBprSj2DEWT{?N|9T^yaR0)v!FY2Yhz|eZ2RIJzI=YLUIppfwa zkM0}T)Ke**E?NQ3_O5@!hg}H@-WSR|BF7DY#<^g zcF}=>p&O(EVaS;?XC_CA6x9RmYy-*yscIngUo;S+TL5ge3Q)-Sz{?rT3=AHfb5w3H z0O?-QZHgf77L^%5t}D=Gy{2#MfX?Y$qcQ=cp!?hlp0EG^^KXmY@7n#|r8D=qtMxnn zUKU0M2FK?_Js@A?0LQ-cjVL+Ll5Pds{k-@jP$?*D&} z?of80-rDy*-KFn6ntus+bhGvX?E#wa(OvrAm*4rHN3(4cP(;9k-lz0HsSWPjeQYN{_F8U|$E01AVJ Nph`Y(&UBs51^{?lr(^&C delta 444 zcmZpe!Pqc^aRDQfy6$Es#tTCA$60F}85kHD7#LhSc?*He|Dx^+3=FLYO2v9Te*PDg z0ty))@aT?F3Giq>;t+q>qnlR_DCX1aqheruz@-}~aJ|z-#lQndDEt?FBoEX4_rK^} z2Q#cwukmHkJfMeE$x#xh>G(`3W0R} z@Mt|yV$3hU`M#(*6Qjsxafw_pP{_CG^|1+lQ($0t;>ExKbUi}?ko|45s;Rz!Xe5w% R11Jm@f-3p8In#AI8vujql7avL From 70125c02c5d4c90d3ab246df4a8e75c64af63c8b Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Tue, 6 Jun 2023 15:18:50 +0200 Subject: [PATCH 08/50] Add files via upload --- readme.md | 6 + schnittstelle.drawio | 951 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 957 insertions(+) create mode 100644 readme.md create mode 100644 schnittstelle.drawio diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e10687f --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +- [Communications Functions](https://learn.microsoft.com/en-us/windows/win32/devio/communications-functions) +- [CreateFileA function](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea) +- [CloseHandle function](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle) +- [ReadFile function](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-readfile) +- [WriteFile function](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-writefile) +- [PurgeComm function](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm) diff --git a/schnittstelle.drawio b/schnittstelle.drawio new file mode 100644 index 0000000..b668eed --- /dev/null +++ b/schnittstelle.drawio @@ -0,0 +1,951 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 486d80b35959ccb18eabedc3858454ec2828c74f Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Tue, 6 Jun 2023 15:19:22 +0200 Subject: [PATCH 09/50] Rename readme.md to links.md --- readme.md => links.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename readme.md => links.md (100%) diff --git a/readme.md b/links.md similarity index 100% rename from readme.md rename to links.md From 1ebe31f828ca176a26c178b5a50345539d460362 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 12:16:26 +0200 Subject: [PATCH 10/50] fix: :bug: wrapped handle in namespace --- cpp/src/serial_unix.cpp | 2 ++ cpp/src/serial_windows.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp/src/serial_unix.cpp b/cpp/src/serial_unix.cpp index 7fca11b..741f721 100644 --- a/cpp/src/serial_unix.cpp +++ b/cpp/src/serial_unix.cpp @@ -9,9 +9,11 @@ #include #include +namespace { int hSerialPort; termios2 tty; std::string data; +} void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 3f2dcb8..7a5385b 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -3,11 +3,12 @@ #include "serial.h" - +namespace { HANDLE hSerialPort; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0}; std::string data; +} void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); From cb4e8259c390e64f9e9fbb1572d3898cfab1dcd8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 10:19:19 +0000 Subject: [PATCH 11/50] Commited compiled binaries --- ts/bin/linux.so | Bin 26328 -> 22280 bytes ts/bin/windows.dll | Bin 19456 -> 19456 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/linux.so b/ts/bin/linux.so index f78d8af4d1c57d8589310feba3987b147bcacc47..c7d24a60301cdcb25785150be1dfb4a71de220c4 100644 GIT binary patch delta 7245 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 delta 7350 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 UWYgVsvl4IBYrQN&-|=MrKhr#)ZvX%Q diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 3c11ed4f852caaed331831c58ab5b953b32d799c..7a4e8a1a416288c480cc1675b187fb9d94e4e8d5 100644 GIT binary patch delta 5554 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 Date: Sat, 10 Jun 2023 12:54:55 +0200 Subject: [PATCH 12/50] Updated mod.ts --- mod.ts | 12 ++++++------ ts/Serial.ts | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mod.ts b/mod.ts index 57749b1..7a304bd 100644 --- a/mod.ts +++ b/mod.ts @@ -1,6 +1,6 @@ -export { Serial } from './lib/Serial.ts'; -export { baudrates } from './lib/constants/baudrates.ts'; -export { dataBits } from './lib/constants/data_bits.ts'; -export { parity } from './lib/constants/parity.ts'; -export { stopBits } from './lib/constants/stop_bits.ts'; -export { statusCodes } from './lib/constants/status_codes.ts'; +export { Serial } from './ts/Serial.ts'; +export { baudrates } from './ts/constants/baudrates.ts'; +export { dataBits } from './ts/constants/data_bits.ts'; +export { parity } from './ts/constants/parity.ts'; +export { stopBits } from './ts/constants/stop_bits.ts'; +export { statusCodes } from './ts/constants/status_codes.ts'; diff --git a/ts/Serial.ts b/ts/Serial.ts index 8bb631a..7579e07 100644 --- a/ts/Serial.ts +++ b/ts/Serial.ts @@ -10,7 +10,7 @@ import { SerialFunctions } from "./interfaces/serial_functions.d.ts"; import { SerialOptions } from "./interfaces/serial_options.d.ts"; import { loadBinaryForOS } from "./load_binary_for_os.ts"; -const pathToBinariesDirectory = './lib/bin'; +const pathToBinariesDirectory = './ts/bin'; export class Serial { private _isOpen : boolean; From 386f64acbf87ae8cb2949baa77a9b903df99312a Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:13:55 +0200 Subject: [PATCH 13/50] feat: :sparkles: handling handle outside from c++ --- cpp/include/serial.h | 9 ++++++--- cpp/src/serial_windows.cpp | 34 +++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/cpp/include/serial.h b/cpp/include/serial.h index 6eded48..8d85217 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -22,17 +22,18 @@ extern void (*writeCallback)(int bytes); extern "C" { #endif - MODULE_API void serialOpen( + MODULE_API auto serialOpen( void* port, const int baudrate, const int dataBits, const int parity = 0, const int stopBits = 0 - ); + ) -> int; - MODULE_API void serialClose(); + MODULE_API void serialClose(int64_t pointer); MODULE_API auto serialRead( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, @@ -40,6 +41,7 @@ extern "C" { ) -> int; MODULE_API auto serialReadUntil( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, @@ -48,6 +50,7 @@ extern "C" { ) -> int; MODULE_API auto serialWrite( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 7a5385b..b282f40 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -4,7 +4,6 @@ #include "serial.h" namespace { -HANDLE hSerialPort; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0}; std::string data; @@ -14,13 +13,15 @@ void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); void (*writeCallback)(int bytes); -void serialOpen( +auto serialOpen( void* port, const int baudrate, const int dataBits, const int parity, const int stopBits -) { +) -> int { + + HANDLE hSerialPort; char *portName = static_cast(port); @@ -39,7 +40,7 @@ void serialOpen( // Error if open fails if (hSerialPort == INVALID_HANDLE_VALUE) { errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); - return; + return -1; } // Error if configuration get fails @@ -47,12 +48,12 @@ void serialOpen( // Error if close fails if (!CloseHandle(hSerialPort)) { errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return; + return -1; } errorCallback(status(StatusCodes::GET_STATE_ERROR)); - return; + return -1; } dcbSerialParams.BaudRate = baudrate; @@ -65,11 +66,11 @@ void serialOpen( // Error if close fails if (!CloseHandle(hSerialPort)) { errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return; + return -1; } errorCallback(status(StatusCodes::SET_STATE_ERROR)); - return; + return -1; } timeouts.ReadIntervalTimeout = 50; @@ -83,15 +84,18 @@ void serialOpen( // Error if close fails if (!CloseHandle(hSerialPort)) { errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return; + return -1; } errorCallback(status(StatusCodes::SET_TIMEOUT_ERROR)); - return; + return -1; } + return int64_t(hSerialPort); } -void serialClose() { +void serialClose(int64_t pointer) { + HANDLE hSerialPort = &pointer; + // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); @@ -106,11 +110,14 @@ void serialClose() { } auto serialRead( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, const int multiplier ) -> int { + HANDLE hSerialPort = &pointer; + // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); @@ -140,12 +147,15 @@ auto serialRead( } auto serialReadUntil( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, const int multiplier, void* searchString ) -> int { + HANDLE hSerialPort = &pointer; + // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); @@ -188,11 +198,13 @@ auto serialReadUntil( } auto serialWrite( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, const int multiplier ) -> int { + HANDLE hSerialPort = &pointer; DWORD bytesWritten = 0; From 0190d172d73c66343a225b318462b86ff9d2a078 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:15:18 +0200 Subject: [PATCH 14/50] ci: :bug: added new branch --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f3b840..451396c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,7 @@ on: push: branches: - dev + - testing paths: - 'cpp/**' - '.github/workflows/build.yml' From 06c05ab6850324ac3e2641ac5788b89ec3645790 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:29:02 +0200 Subject: [PATCH 15/50] fix: --- cpp/src/serial_unix.cpp | 5 ++++- cpp/src/serial_windows.cpp | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cpp/src/serial_unix.cpp b/cpp/src/serial_unix.cpp index 741f721..5d04f80 100644 --- a/cpp/src/serial_unix.cpp +++ b/cpp/src/serial_unix.cpp @@ -122,7 +122,7 @@ void serialOpen( return; } -void serialClose() { +void serialClose(int64_t pointer) { // Error if close fails if (close(hSerialPort) == -1) { errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); @@ -133,6 +133,7 @@ void serialClose() { } auto serialRead( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, @@ -168,6 +169,7 @@ auto serialRead( } auto serialReadUntil( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, @@ -202,6 +204,7 @@ auto serialReadUntil( } auto serialWrite( + int64_t pointer, void* buffer, const int bufferSize, const int timeout, diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index b282f40..158daa1 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -1,6 +1,7 @@ +#include #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #include - +#include #include "serial.h" namespace { @@ -9,6 +10,8 @@ COMMTIMEOUTS timeouts = {0}; std::string data; } +std::ofstream outlog("log.log", std::ios::out); + void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); void (*writeCallback)(int bytes); @@ -90,6 +93,7 @@ auto serialOpen( errorCallback(status(StatusCodes::SET_TIMEOUT_ERROR)); return -1; } + outlog << "open:" << int64_t(hSerialPort) << "\n"; return int64_t(hSerialPort); } @@ -117,6 +121,7 @@ auto serialRead( const int multiplier ) -> int { HANDLE hSerialPort = &pointer; + outlog << "read:" << int64_t(hSerialPort) << "\n"; // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { @@ -205,6 +210,7 @@ auto serialWrite( const int multiplier ) -> int { HANDLE hSerialPort = &pointer; + outlog << "write:" << int64_t(hSerialPort) << "\n"; DWORD bytesWritten = 0; From ebe1e77ab5daa98d379ba303b99d5104d312c16b Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:31:31 +0200 Subject: [PATCH 16/50] fix: --- cpp/src/serial_unix.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cpp/src/serial_unix.cpp b/cpp/src/serial_unix.cpp index 5d04f80..f364fcd 100644 --- a/cpp/src/serial_unix.cpp +++ b/cpp/src/serial_unix.cpp @@ -19,13 +19,13 @@ void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); void (*writeCallback)(int bytes); -void serialOpen( +auto serialOpen( void* port, const int baudrate, const int dataBits, const int parity, const int stopBits -) { +) -> int64_t { char *portName = static_cast(port); // Open new serial connection hSerialPort = open(portName, O_RDWR); @@ -33,13 +33,13 @@ void serialOpen( // Error if open fails if(hSerialPort == -1){ errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); - return; + return -1; } // Get the current com configuration if(ioctl(hSerialPort, TCGETS2, &tty) == -1){ errorCallback(status(StatusCodes::GET_STATE_ERROR)); - return; + return -1; } tty.c_cflag &= ~PARENB; // Clear parity bit, disabling parity (most common) @@ -116,10 +116,10 @@ void serialOpen( // Save tty settings, also checking for error if (ioctl(hSerialPort, TCSETS2, &tty) == -1){ errorCallback(status(StatusCodes::SET_STATE_ERROR)); - return; + return -1; } - return; + return 0; } void serialClose(int64_t pointer) { From 4e26e122e1e8fa36075ffbcf9bd5aa8b8305b514 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:34:02 +0200 Subject: [PATCH 17/50] fix: --- cpp/include/serial.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/include/serial.h b/cpp/include/serial.h index 8d85217..1aa75da 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include "status_codes.h" @@ -28,7 +29,7 @@ extern "C" { const int dataBits, const int parity = 0, const int stopBits = 0 - ) -> int; + ) -> int64_t; MODULE_API void serialClose(int64_t pointer); From 8e2c289075a0ffb47e9965b6075daf14d2a04c11 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:36:19 +0200 Subject: [PATCH 18/50] fix: --- cpp/src/serial_windows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 158daa1..4dd2922 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -22,7 +22,7 @@ auto serialOpen( const int dataBits, const int parity, const int stopBits -) -> int { +) -> int64_t { HANDLE hSerialPort; From df31e30d5915b272becaa2370281e94d34aa42b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 11:39:17 +0000 Subject: [PATCH 19/50] Commited compiled binaries --- ts/bin/linux.so | Bin 22280 -> 22280 bytes ts/bin/windows.dll | Bin 19456 -> 32768 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/linux.so b/ts/bin/linux.so index c7d24a60301cdcb25785150be1dfb4a71de220c4..74202dc86a99326321bd5d32306e1b0bc7dae47b 100644 GIT binary patch delta 2485 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 Ywz@y+U|mj>5f`JrjD^Ft`WyVe0eu0IPXGV_ diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 7a4e8a1a416288c480cc1675b187fb9d94e4e8d5..d97bcbdc7fe7af163392343f6c06ce58e47056ea 100644 GIT binary patch literal 32768 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 literal 19456 zcmeHv4|r77weOxJlZ1p}2FPIiR|gzSFcLz73WmrGnZZ3eqX81c`X>p=grrSo()p7F z3mP0y#?xu>KKm7IdyBxW+;_dV^y;NS+d3gM2?82WYtX)$wzi%apG4~i!GGud);?#F zNrc<`z3=sX?|tq0*k|p%_S$Rjz1G@muf5L%&sTS{RK{2ulAJl#c{`4ON+nWTWBz3 zSvA%-js3@a4?OYKp+su`9Y1tG%H4l_vrC1)?edHA+g)t}4t8w;d~*0r0Uvnc%|jgJ zr{DQ)*Jc6V>UvN>>me1M7UeZfb&b@=)EQMc8LNLdon3nSw)#ZfD4S==PML8vy9Sti z6?@%6K$FOKV%lmxg|T#jnt*IK5F|`IsjLR1YNG`Ba#_V3xSg@-p#J$CjCD}sPR53) zqgKX#KnhAcI~l7)zSF_j6$#u0psgG_6a&>NZH(CGw81i<6fO~E}UNmHyyEYHx z#A9KsrZ7-n8>&V19H4ASxk%R{B|SFO6slxweFiFOkRU6z5-I7iF%~auRSCr$F;~$i z=9c`}h+iNWr~^{Sq!St9$B~jAo1pVH`$0%DVvv=fyOjzPkL^n%nW+0)%kh}O1(gqH zUdq^UJUrTLHSuW3n#-e`trq(_9(muwf1#+)gDz>zEq%nL58b7|GCr~m(&BygTqB?> zGG+=I-BG(q?z)<>-n1Lp$Z9V2@#sC)A|B~C^3q?m8xN7$a7pH+-Q2ixn8&JgTzXkv zrDx1dwCOJC*F5@wiA()F>dWQQpjkd$(!<7w99R@I=?X42i8-%# zWA-(k*pf?VERmNm@K@V!;?fB;&WAgcZYcNma&l>phE`CTz-XU zq_L5d62%>DGhr+%c=Wzp4^t?UUxx^%TOYbmiMMz z!}!)u#CRaY+s1h0a2_u>jbS1?c2zsNInAYG@>A$(WS(L!TLb}e>DThvxycM=lvHNX zo4M3WGG9+BsBl9CHA4E;_IvI3+;?}6yfPImG;<3V*1N@%no&Q8y~(59Y7t49S-V< z=aIB)XF+PDksnRf$V|TdXedjz5rL`>p@xEUWQ!e8hdbH;?O0bpEuPqQR|wVAX{vd~ zLN@KNcDN)+w$j=vKMBmOv7Azubixx`rIQ~;S*(Enil)xZ#ON0(=KqF`NNCDUt%6ZO<;y9&FE} z4ZI3%LSS#t1nSp>io#WNi%url*QEZu7wj*U`b!?=1OqT%tTB&tXAZypmC5D{e|V2I zQ#cb)W)P)x9wWiR2f2IzL~-pXgQC$trmF}{1T6u zOP8X7Kr~U`sLzMo4d_X>O&tt|t<~$P{+f%`YxY#gW4FTeUur9px4=b{Plbn>DeOKn zG{mDE&frLXk7B;LfV$p(Dm0x-FA;9ojRqxgQ7vF#3|ieP{+cq~-k`)VgD>d9KKxhFsBA zVR+#M!Lc}qYqW%XrA>HEvO#zbb=#`0z7LW=vH+5o)4za(<)P0fbBOnquyP-&$%0B#2nFjs{^&%9evKa9?je_gAEh1 zzd+G|JGSL>*YgR3*dE_>v($g?wDBqmF5uCWSGrC>80UW1{a&i^;NkdCiX)b0a;C)X z*Y z3SiAiwc5MF9^EnKgok;Dy!ej<$5dO64`+=B8a(-I^s&Cj@#1T84_mjsrjGD!}3$ zOEo?eqfy0dsjv={I~KAw64ws5v7E9o{R?R3D(!8%{I*zHy1TT$eU_*6!*&epvymAd z=?hQ6`H^({i`dkmiMT6vdn$q=`3(e%6pX~oo2WUK$cwtkBrTZW)cPd}GDaku0J>~>2nT^?ikaksQ(&{gm&m~MLsX&stf|3b6ab<5>K8)J4f8+`%qt{Kbzp!4OiVTnufl2qtji&+(dtilKR_${&rD+a1P`B{qT~c{zlB`3o+DqUpwS7nw#Vt zf{0B4>|Yf+7uJF1Y3Fzl$Ovt^3XUYS+3u&{=X56N!EIfym{(psp^^Zc^;C73FJKbw z*UH}m2dp0iY+Q+xvnpfI%Y(UMp$*^qDb!)U1lm5Xm`wyQ%3ZX7ew$Lkzcx4SgnW@x*gV2E`Ja#8yp`L_XuHe$$nvo+CQ;obWLoqi(5*X((`2`%p z-ID5i?U1MBfoDH1$FtG<)+6Na5eg!VufFf@dwb+3umX?EL3-19&@jA`vGGj@<=;&y zpPpPsyhP_m69r8+I|50ppdyHd*`+aB`kly1A0?I*R$8BaFF4R;2G*QdgNoTZ7ekBc zA4Y{(ZJ7}A@S7kZpF>Dmd^JQQ8ER3+{+6qlZvldK`hNo9A=23J)5sYQI&kibneCw4 zp}zy~==IC+w(Tgh5$eiPycP3hD!17vfZI&PeBMI2(A|eV0jH4~aJUL}eR?zA#o*hg zCt5Y9M-FQlxQub!dAo{J%zc7W7z#E#2c%;DM-`EAh^$~lf9O0xb0_L3KEP2lL|*2I zt-5DC{`GTY&w&x=3 ziY~;~nlr!DBeiM1yf@*rjE{T|qNI3Y8uVh@rWm*F1p+2Oa>4d=%r2r%aw!(f915>` zQ8C+awxDI-2wKT`jIzzt4047#q)}1^Z79J4#D>_FaO|pj5fNJkMQm~!X4~ty{tP_i zmJAX+O=HB?C1O+Q3s>Y7qbs7!apTb8g5Q;&{D`(goDsm3_(a1{BzEmB85Elx#Q9G> zD@cZ}Zs_%8+P|R26|`NtVrg*bWkFED<83BjEHA64wxp|*x5lRD z$zD2E#?o%aK5aqfdMB!B!@y-(2=^kf>z4pQVHDZu*!wg>8c+BPbsAVm15c8@`2wIf0m&y2AAO|>ZY|ad`V%Ve73EMNq+HTq z^y|w=0Fi#>&&CJ!-5`L+cnN@t1W|kypjZDxymdn2u&6^=KurEN85G$NLfY;w&sQ01 zSf>B{4S4SkUS}v8#C{Yr|4)>8>PuUf(RZvX<=`ZnUj@4CqGL$RbI^A8`9mtYaW~O!{%nf9MI)CJC=nn^MvXq?2{Z_Vx za#^s;bifp0rnx<;j2=BLzY5WooPu1kx4jk4;E$MJS}L@Mc_ifcA~5XH)1kC&r^3_a ze@7Ji=rQ?U01^|1jj6P7OHYCr4*GOBLv92KEx%VG-EBb2w*f(Yaiil^y6@B!ChUhk z8}M_3m&eZyD*a+Pi1p`@?D+oh68y3ZH8XWPqID+vbV|5wf72fM1HO_RwV!2aZs}xb zwq3Gidg?0D&JDU#Px88c_ths|bv?IAIoJ-$O%l%p$UN)Nr5Z!o2v&8ek)cs{YQMV# z-5kAp_)_!(?#a)@{RS^JeB%bF%EY_7O%3O|p-x>7?>=f8o+tFJ$swk{9Bk;)KdL)> zSQp9?7nbrK1j%%eP$y3F#vS0Y$a}g_KE38dJ^|^(9OY|qF)^Z-KSeX+LDe6)qydu7 zFzuxtY`x#bIUB`XEEsK_<1CQ;ElK*wEq#b(@+5e{t!(Q@LwPPZK03I=VYMNWh?Jec zl$de*ukh~E{{jVCesVL2w#7qt$Uni_mcL4`t$4v~Z@{qpg6u&2vD)c5Hd!4$U55Uap=9>8vfa3j1zb`wKskVlrXkQMv7d`t{8ghkW)JT<^B z$)!}cWVj#9?8-?+-vm}dM)+P6*PK#_zEVwmpgIIyFnM|!K1o82<1u}a?a}j+egWEV zk3VRbw38_PQN0Njat2NxLNb;}*}>~E=EX4KFdW$=1%Z*k*KRgrHfb_A?MsD~M zs0d5exXk=5uzoNDk@5%VBDPYAjOp5)2vlFg>?uIZ!tPi^+8N1F%p1+{Z-aDPpcw4m zfrZqhHz=^!4GB+FeJ{DH1uI^yiYU794PaUr5WnvtMU z%%eFFpc2wYl+>_oyvM?%9z*z4r=P10d0K3}jy_6`^no8m&M~!y-`ohsPt26r~=9wm) z#|>O2?ro=s@8%IhX))a8{LvMPk@xAZMuBxQRu)g!u~2?lO?nCo%`IysaGCzV`Ojbu zmUb&Yq{9LwBjCop-N77(q`#|#jzs-B#9_B1JA&ha-ib^XEd)o5e_A@a`5GEF2I7!N z;Ax3r7@z;cv|yGqyBlq1p-G?q@x`hGK>YR?vc~7%%`rwEBSulfW*}aGSXlJRuv&L{ za1$u52nNAkH^94pZ{gVk922x~1Z9?aJva4)@09enfI8Bj*{8n&8LSBw)h|KLezwOF zS{muM^y#lek#^3g{&M8HKsDgFdeBii7>1JvC+pDip|Bxh_zY2)Eqdig0HpYQTE`(o zCXpki>K@@3U_2%9W%^N2AdKpX%r7Iss%QHu9(%@W!xF_=IF9b5(}&=!5Tu?miSQsz zI(A~gAsV231Xh8)H0Bw#cMZVYE{t~0*lG*~!poZddn7j?JlB`5A&j3$&5{?rq_`&Pr%52p5I3$9LH|q3% zU^^kpw<+c~k%do~j&K0CK&kRCg&+8VbpXP`v4CWT^T1)O3~jHIP7{ak69?&-Vtx`C z#k^S*`=6hdhAUp$?(lh}hHzwdSVc=Usow(}q?K`qeEkW08R%kykvN+5csG&&5}Uk?#~cPAkna9CPt``SRzN3!q)K3U0l9lyI0IFAoS+a zvtwXdqKG?^ttWa0E#QA2+iLs;(c=3CWMFCCI}{+u9yqZ(L|(k9Acfh1Pzq=51|4+H)hbG zEVeB;1!ZwK)E6xu^D-lRJ~YWsb)?c-D0zK>B}sI4;pO&lSV`Nzfk1Mwae?~la$ zWAQ#K-ecnZiFkh|-v1`v2gExCJt*^4`gJ1D#e0o-FA?u+#5-5Kv&38FqxL%__#DRj z`0)d}9{5DE9C{|=S!GDYOnxWT&!=(NU}^7hNmp`o>r$-$xbg9BsT*DZcwv6;J?gOu zT@Ua3Gq&C&v_<|0V0Nm8Fj1ir|M|lNG0v65Uor{Xr_BSO*nT5Egg9HJDy$Pvjl2Zp z#HlFxJ_5GDCG#)vc~jha-H5fiiwcuIOX0@;OP{6a#{M7b6R2GiH5_#6#dHMm5BA6KdMZ))&}2LDZik87|~gUuSO z&|t9!=V&lRgCA6?d|%UGT!W@{Dn9XU)5cM$!35s2R?RKd;E%QXUutkrgCA&cOoJ&J z{d5h^(O`n_547@54Yq0HO4NT%!#8U9do;L4gANT|r$LhjKi1lHY4FDyJf*<||NbJ@ zNn1w(?p&gl4@`jx`Ya8fDC4(KqWyUJe>dY)`B=;<+mYf(s;)CPsx0&$!`jp9ni)X*I>T}2Q)aSL28%y?KRvT z8$$H6{uZRgQ#t;1%E{u2*Wl;gPV__RA`j8qlIrQ6EcqcGiH8i0@-`&FmkQdG-0!X$ z#&&}b*2+a65fmoX4V`Ol&40-Bk?5nOMDYgE;1>dDV@_{ zXV)RW6wm^AXg*`FApIzxv3Cm@dmrhBMfj~d0`v7q1+dAdk$z6LiMa6quGHW+#8=*q zC5%xle-Q8sK=FVE|Csn~y|uoHa3&yHtqELRL z#><;1D-4T%(_h#`zoEB+0`jwCK7fTqMRg5ulS3%exC+bH;M%+#CCF$pPVBs+lX18m zhCNKe(Pw5nE0g)T1YPDNT!o-BO~whj+)21fL1zI@$ViN@QqUCvH;{rcYkzA%>+xe< zqHGP&FyMDoc?cS7o4+~KLP8fbNKJ&cW_AGK`lK$a!`rlZiS($L>_2py{WDkd6Bh59EH znhr|{w-mS}y}~*$r`3$DN&|njEt!k>y9(MI6Mt(#Ypyd) zT9VGPiql(l_)wnq5d0HC=vX%^lg+BkVzZV^W3!59j81ROu9>S(VfuG6SrN`R64GYK zc`iDdT!wSwdeC6}{S3+{Q);X7Kt$z_#iCd*m_p5bg3ey4z4qMOIEN2d*B z#PzLdHK|1j-VE~6nKPL=G>w_-0V^?v;+aEYevk+G0o(?%du~(bmt58v(wU(cqaDC# zYf_5l&Q52u-?0GrYi2R_ZKU@#-jmDlB%o)YPw-E!pGJC}hoADmVljPoE|0OTFhKH&1a&Do zM)J|+WU?H{BnL9dfh=;0O|7C1W1@C5$K?i@p`PSMJfU^=__fea0b?(VRe_IF$bTcL ztl3?~OksDbuBa_W&He>+FCqO=Yr7ly-y?mYl}C_2n^aHbb4m5nE=y;ZEitmo0&|9P zT4&cJ=D84?$n1rT&4LFeD8{fRr9!pI4A>-WvluohY!vw=dS;x3vRRM$JrCRLV(BE8 zX*xD-17Kzv%M7Hol9qIaG-km1FccGoDxYLXd1e-GHUu9u^`U*6-3~v1RDpD%r?E!G zCiY9(A1iVuQ<_ku*n*y9I@1(7s*l&udoo@80(6OS@4CRaNY@t|bE5xZ_*1f%X<8Zt zpU;piz{lwl6%(<11-=7`eoJ40v>QJHqBR}2;;t8T9;6y1AJR9GqDYS;{RrtNNYq0L zONIUDSvt$WUK;cUnrfR{{ee(neRH!`EN}J)y;}YjZ>R#bL6@(=uc7YnIRgQIV7#=( zTU$R~xHHfcO0>PB)$7wLl4vMfdQ)47eS$_v&#En8H&7+>|N6Z_FDnmtYeU{uP0e0Ai=>e$ zQ69I!>B5XeA%W8i^b)eR_(fcI|&)Rk6 z6^oY?sT}9B>T2+)9=~0vuJgBUVr<@*@bzBY1o$^$)mE2xbW}D5{O!((D~X#}i?^k& zF~C@<$hEXGwp`?hTN&kA{B2%#Gv$Kb5XFqu)#cT}R&QNXLsMOKqmU5V&)0emZEE#a zH({k$Ydu#tHwDpdUHO`-+bdlj=lC3!G0=(2it5%{{C%`HOmDktS6!806ygrO=$s`KD&)d-yst(m|Agfr;ssrAQm;(CIY8t}6I&ldC zX?r`ob>WaVQKdHe3dRx$Rl`=mh|NJsWN@YtBLS-xcH>08+KbUQ1ia|2wzX+tOK@R( zlW!q7EX3c5hhS0*n-?!!yiisB6pBV~ZEJEhdpm7SsJXnh71HyT`|;ruf5rSR;oN@z z*Tb!=w6QyVp#U`e0oAN)3WUP7%~d{hTaRcb)fIGjH-tBC^ad&d-XMwSWqp-TRdxNi z^@LoBH*v{27~^738upC765?s{L3jxi zyE|=l*c;eX;SDtS11+__I?N1`LFe=8x(n_Zs zo3C>;1xej1vAbzQpf<3n9JUr@9jUHy<5}y59dO#J{{H-}Nx-O0I1y_l=6~W|%c+Lf z6eaOxkK!+i)zs6q$f!k;orqU6%O~Gw7Ot?b!yPMp7Vdhh;qI!{4MW`s!0lr6yW22gd2(OROsCCEiF%HhL5y7zBjN9NHw5o z1>A|$j6A`okV42G0PNQC1Aq%~e?a);y92sYXvEoIC-4LxK-z~q!R<)TAx}`!@B|;z z@N}m50*QFi+2SiWPb|f}66cD3;OTtPU}0`=HeTh#D`$6mM2(? zM19o*p3(B7fIDzjccU%AXOP5r0AJVggMhPee?s^izyc)VPj@OVE$;?=8fgdk!~uVc zv=e!{FU`JIZ95(C9wcf@Fi?QA7idC&V@QL@6I_5Z^>sMg(*MEIgme$`-vWFFiEQ9G zz?wzK1HT!tuLuzNhX?c8uWB-730B!LdPTX^JAy4-mbU)FI@e`!`h5_UW(p>}P3DSK5Ky&HhP2OmC4mk5i4WbZf~2n z8Q(JTF3YRMy+E7)>)t?~CER4Mqd>7Nuc5X%=*_b%8t1co(ZzdNzG%{zmM_jK&(+_Pg3+nc#J xe{a#=U3(Ag?b>VGw|-yEzQ%p6`#ScaaSePpK;!ORyW_j%-N^p^`Ts-${|gPqb?^WH From 6874e755e871734353619fee59d01c703f1cd8a8 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:43:30 +0200 Subject: [PATCH 20/50] fix: --- cpp/src/serial_windows.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 4dd2922..0c972c8 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -93,7 +93,8 @@ auto serialOpen( errorCallback(status(StatusCodes::SET_TIMEOUT_ERROR)); return -1; } - outlog << "open:" << int64_t(hSerialPort) << "\n"; + outlog << "open norm:" << hSerialPort << "\n"; + outlog << "open after:" << int64_t(hSerialPort) << "\n"; return int64_t(hSerialPort); } @@ -209,8 +210,9 @@ auto serialWrite( const int timeout, const int multiplier ) -> int { + outlog << "write before:" << pointer << "\n"; HANDLE hSerialPort = &pointer; - outlog << "write:" << int64_t(hSerialPort) << "\n"; + outlog << "write after:" << int64_t(hSerialPort) << "\n"; DWORD bytesWritten = 0; From 747134d4ff24d4c9ba1d519e785b6bfb900c4411 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 11:46:45 +0000 Subject: [PATCH 21/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 32768 -> 32768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index d97bcbdc7fe7af163392343f6c06ce58e47056ea..7e33894ac783ce1f387775d3e26eca488d861321 100644 GIT binary patch delta 8002 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 ZE!x$+D`2;Ecld6{?!?{A)sJlC{{rZ{tX2R3 delta 7840 zcmeHM`&*RNzF%vc;U+MHFx&(gU=R>Q5b%P4!_8iFAT(4&H1I-{W@tmY^8z{E#7~hKV61{86Dkz z>-JsWwHR7jG%YQf)?7_L*_vP6Y|ngA{-JiDJauJF?bF~**DuvQqoTX+aTR;&Jo3wR z&x2q2^CcBulrPo(41Urzcijsr{!q75#UZsG{88nn-9Nv9_d�Q9{Uq4PNBDsdn9h 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 Date: Sat, 10 Jun 2023 13:48:36 +0200 Subject: [PATCH 22/50] fix: --- cpp/src/serial_windows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 0c972c8..5f2045f 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -211,7 +211,7 @@ auto serialWrite( const int multiplier ) -> int { outlog << "write before:" << pointer << "\n"; - HANDLE hSerialPort = &pointer; + HANDLE hSerialPort = reinterpret_cast(pointer); outlog << "write after:" << int64_t(hSerialPort) << "\n"; DWORD bytesWritten = 0; From 26076f6e62cf0ae5150db01c0d1056c038af3674 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 11:51:12 +0000 Subject: [PATCH 23/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 32768 -> 32768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 7e33894ac783ce1f387775d3e26eca488d861321..061908fa70d9f2cf8e7989d4829dbc8b8221820e 100644 GIT binary patch delta 5551 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 delta 5598 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 From f44dd72130cba348d03e676e963e558c0eedb858 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:51:31 +0200 Subject: [PATCH 24/50] fix: --- cpp/src/serial_windows.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 5f2045f..e4bdce2 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -1,7 +1,5 @@ -#include #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #include -#include #include "serial.h" namespace { @@ -10,8 +8,6 @@ COMMTIMEOUTS timeouts = {0}; std::string data; } -std::ofstream outlog("log.log", std::ios::out); - void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); void (*writeCallback)(int bytes); @@ -93,8 +89,6 @@ auto serialOpen( errorCallback(status(StatusCodes::SET_TIMEOUT_ERROR)); return -1; } - outlog << "open norm:" << hSerialPort << "\n"; - outlog << "open after:" << int64_t(hSerialPort) << "\n"; return int64_t(hSerialPort); } @@ -121,8 +115,7 @@ auto serialRead( const int timeout, const int multiplier ) -> int { - HANDLE hSerialPort = &pointer; - outlog << "read:" << int64_t(hSerialPort) << "\n"; + HANDLE hSerialPort = reinterpret_cast(pointer); // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { @@ -160,7 +153,7 @@ auto serialReadUntil( const int multiplier, void* searchString ) -> int { - HANDLE hSerialPort = &pointer; + HANDLE hSerialPort = reinterpret_cast(pointer); // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { @@ -210,9 +203,7 @@ auto serialWrite( const int timeout, const int multiplier ) -> int { - outlog << "write before:" << pointer << "\n"; HANDLE hSerialPort = reinterpret_cast(pointer); - outlog << "write after:" << int64_t(hSerialPort) << "\n"; DWORD bytesWritten = 0; From 949f183323aa3ece96d04a00111e6bbcf69230d4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 11:54:31 +0000 Subject: [PATCH 25/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 32768 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 061908fa70d9f2cf8e7989d4829dbc8b8221820e..e08b5f1f0c2baf1364dc792e143d5d928d62c404 100644 GIT binary patch delta 9760 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 literal 32768 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 From a56019609091245395194919091b624f5dbc7f57 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:55:15 +0200 Subject: [PATCH 26/50] fix: --- cpp/src/serial_windows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index e4bdce2..e39028e 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -93,7 +93,7 @@ auto serialOpen( } void serialClose(int64_t pointer) { - HANDLE hSerialPort = &pointer; + HANDLE hSerialPort = reinterpret_cast(pointer); // Error if handle is invalid if (hSerialPort == INVALID_HANDLE_VALUE) { From 232d6c53671f1883d500b10902f074f01dbdbc73 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sat, 10 Jun 2023 13:55:48 +0200 Subject: [PATCH 27/50] test: :white_check_mark: new code --- mod.ts | 12 +++++------ test.ts | 31 +++++++++++++++++++++++++++++ ts/Serial.ts | 18 ++++++++++++++--- ts/interfaces/serial_functions.d.ts | 7 +++++-- ts/register_serial_functions.ts | 9 +++++++-- 5 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 test.ts diff --git a/mod.ts b/mod.ts index 57749b1..7a304bd 100644 --- a/mod.ts +++ b/mod.ts @@ -1,6 +1,6 @@ -export { Serial } from './lib/Serial.ts'; -export { baudrates } from './lib/constants/baudrates.ts'; -export { dataBits } from './lib/constants/data_bits.ts'; -export { parity } from './lib/constants/parity.ts'; -export { stopBits } from './lib/constants/stop_bits.ts'; -export { statusCodes } from './lib/constants/status_codes.ts'; +export { Serial } from './ts/Serial.ts'; +export { baudrates } from './ts/constants/baudrates.ts'; +export { dataBits } from './ts/constants/data_bits.ts'; +export { parity } from './ts/constants/parity.ts'; +export { stopBits } from './ts/constants/stop_bits.ts'; +export { statusCodes } from './ts/constants/status_codes.ts'; diff --git a/test.ts b/test.ts new file mode 100644 index 0000000..70e493d --- /dev/null +++ b/test.ts @@ -0,0 +1,31 @@ +import * as serialLink from "./mod.ts"; + +const serial1 = new serialLink.Serial(); + +let port; + +while(!port) { + const availablePorts = serial1.getPortsInfo(); + + console.log('serial properties (available ports):', availablePorts); + + port = prompt('Port to connect:'); +} + +serial1.open(port, 9600); + +const textToSend = prompt('Text to send:') || ''; + +const dataToSend = new TextEncoder().encode(textToSend); + +console.log('serial.write():', serial1.write(dataToSend, dataToSend.length, 10, 10)); + +console.log('writing:', textToSend); + +const dataToRead = new Uint8Array(20); + +console.log('serial.read()', serial1.read(dataToRead, dataToRead.length, 10, 10)); + +console.log('reading:', new TextDecoder().decode(dataToRead)); + +serial1.close(); diff --git a/ts/Serial.ts b/ts/Serial.ts index 8bb631a..2f4e7e6 100644 --- a/ts/Serial.ts +++ b/ts/Serial.ts @@ -10,11 +10,12 @@ import { SerialFunctions } from "./interfaces/serial_functions.d.ts"; import { SerialOptions } from "./interfaces/serial_options.d.ts"; import { loadBinaryForOS } from "./load_binary_for_os.ts"; -const pathToBinariesDirectory = './lib/bin'; +const pathToBinariesDirectory = './ts/bin'; export class Serial { private _isOpen : boolean; private _dl : SerialFunctions; + private handle! : number | bigint; /** * Create a new instance of a serial connection. @@ -54,7 +55,7 @@ export class Serial { baudrate : Baudrate, serialOptions? : SerialOptions ) : void { - this._dl.open( + this.handle = this._dl.open( encode(port + '\0'), baudrate, serialOptions?.dataBits || dataBits.EIGHT, @@ -62,6 +63,9 @@ export class Serial { serialOptions?.stopBits || stopBits.ONE ); + console.log(this.handle); + + this._isOpen = true; } @@ -69,7 +73,7 @@ export class Serial { * Closes the serial connection. */ close() { - this._dl.close(); + this._dl.close(this.handle); this._isOpen = false; } @@ -88,7 +92,10 @@ export class Serial { timeout = 0, multiplier = 10 ) : number { + console.log('read from handle:', this.handle); + const result = this._dl.read( + this.handle, buffer, bytes, timeout, @@ -117,6 +124,7 @@ export class Serial { searchString = '', ) : number { const result = this._dl.readUntil( + this.handle, buffer, bytes, timeout, @@ -142,7 +150,11 @@ export class Serial { timeout = 0, multiplier = 10 ) : number { + + console.log('write to handle:', this.handle); + const result = this._dl.write( + this.handle, buffer, bytes, timeout, diff --git a/ts/interfaces/serial_functions.d.ts b/ts/interfaces/serial_functions.d.ts index 890b9c4..bdf5d6c 100644 --- a/ts/interfaces/serial_functions.d.ts +++ b/ts/interfaces/serial_functions.d.ts @@ -10,15 +10,17 @@ export interface SerialFunctions { dataBits : DataBits, parity : Parity, stopBits : StopBits - ) => void, - close : () => void, + ) => number | bigint, + close : (handle : number | bigint) => void, read : ( + handle : number | bigint, buffer : Uint8Array, bufferSize : number, timeout : number, multiplier : number ) => number, readUntil : ( + handle : number | bigint, buffer : Uint8Array, bufferSize : number, timeout : number, @@ -26,6 +28,7 @@ export interface SerialFunctions { searchString : Uint8Array ) => number, write : ( + handle : number | bigint, buffer : Uint8Array, bufferSize : number, timeout : number, diff --git a/ts/register_serial_functions.ts b/ts/register_serial_functions.ts index 94e6351..ba28af5 100644 --- a/ts/register_serial_functions.ts +++ b/ts/register_serial_functions.ts @@ -20,15 +20,18 @@ export function registerSerialFunctions( 'i32' ], // Status code - result: 'void' + result: 'i64' }, 'serialClose': { - parameters: [], + parameters: [ + 'i64' + ], // Status code result: 'i32' }, 'serialRead': { parameters: [ + 'i64', // Buffer 'buffer', // Buffer Size @@ -43,6 +46,7 @@ export function registerSerialFunctions( }, 'serialReadUntil': { parameters: [ + 'i64', // Buffer 'buffer', // Buffer Size @@ -59,6 +63,7 @@ export function registerSerialFunctions( }, 'serialWrite': { parameters: [ + 'i64', // Buffer 'buffer', // Buffer Size From eae0006be395ee23aaf13ac98d0eac35d61fb177 Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Sat, 10 Jun 2023 14:00:52 +0200 Subject: [PATCH 28/50] Update windows.dll --- ts/bin/windows.dll | Bin 19456 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 7a4e8a1a416288c480cc1675b187fb9d94e4e8d5..3e6f46627dd8f9c051b3fbcf8491a6f4ddcee486 100644 GIT binary patch delta 6299 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 F{{cy?fd>Ep delta 6220 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 ZXDEUe!?y)^6x2Nzp9J0gadU5m{SPwWOacG^ From 1778785c17024beb0b3d2a8b8fec0e0bafa420f8 Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Sat, 10 Jun 2023 14:08:08 +0200 Subject: [PATCH 29/50] Update test.ts --- test.ts | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/test.ts b/test.ts index 70e493d..f491174 100644 --- a/test.ts +++ b/test.ts @@ -1,31 +1,43 @@ import * as serialLink from "./mod.ts"; const serial1 = new serialLink.Serial(); +const serial2 = new serialLink.Serial(); -let port; +let port1 = ''; +let port2 = ''; -while(!port) { +while(!port1 && !port2) { const availablePorts = serial1.getPortsInfo(); console.log('serial properties (available ports):', availablePorts); - port = prompt('Port to connect:'); + port1 = prompt('Port1 to connect:') || ''; + port2 = prompt('Port2 to connect:') || ''; } -serial1.open(port, 9600); +serial1.open(port1, 9600); +serial2.open(port2, 9600); -const textToSend = prompt('Text to send:') || ''; +const textToSend1 = prompt('Text1 to send:') || ''; +const textToSend2 = prompt('Text2 to send:') || ''; -const dataToSend = new TextEncoder().encode(textToSend); +const dataToSend1 = new TextEncoder().encode(textToSend1); +const dataToSend2 = new TextEncoder().encode(textToSend2); -console.log('serial.write():', serial1.write(dataToSend, dataToSend.length, 10, 10)); +console.log('serial1.write():', serial1.write(dataToSend1, dataToSend1.length, 10, 10)); +console.log('writing1:', textToSend1); -console.log('writing:', textToSend); +console.log('serial2.write():', serial2.write(dataToSend2, dataToSend2.length, 10, 10)); +console.log('writing2:', textToSend2); -const dataToRead = new Uint8Array(20); +const dataToRead1 = new Uint8Array(20); +const dataToRead2 = new Uint8Array(20); -console.log('serial.read()', serial1.read(dataToRead, dataToRead.length, 10, 10)); +console.log('serial1.read()', serial1.read(dataToRead1, dataToRead1.length, 10, 10)); +console.log('reading1:', new TextDecoder().decode(dataToRead1)); -console.log('reading:', new TextDecoder().decode(dataToRead)); +console.log('serial2.read()', serial2.read(dataToRead2, dataToRead2.length, 10, 10)); +console.log('reading2:', new TextDecoder().decode(dataToRead2)); serial1.close(); +serial2.close(); From 8693c27db4a91a4a7f0e14cecaf2820882909b68 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 10 Jun 2023 12:10:12 +0000 Subject: [PATCH 30/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 19968 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 3e6f46627dd8f9c051b3fbcf8491a6f4ddcee486..28c09d04a525e99b68977ba7bf5756e887562ab0 100644 GIT binary patch delta 25 ecmZpe!`Lu~aRUb Date: Sun, 11 Jun 2023 12:47:32 +0200 Subject: [PATCH 31/50] feat: :sparkles: added Clear Buffer and Abort functions added Clear buffer in|out and Abort Read|Write functions only for windows currently clear buffers and abort reading or writing --- cpp/include/serial.h | 9 +++++++++ cpp/include/status_codes.h | 6 +++++- cpp/src/serial_windows.cpp | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/cpp/include/serial.h b/cpp/include/serial.h index 1aa75da..bebe2cf 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -2,6 +2,7 @@ #include #include +#include "serial.h" #include "status_codes.h" @@ -63,6 +64,14 @@ extern "C" { const int bufferSize, void* separator ) -> int; + + MODULE_API void serialClearBufferIn(int64_t pointer); + + MODULE_API void serialClearBufferOut(int64_t pointer); + + MODULE_API void serialAbortRead(int64_t pointer); + + MODULE_API void serialAbortWrite(int64_t pointer); MODULE_API auto serialOnError(void (*func)(int code)) -> void; diff --git a/cpp/include/status_codes.h b/cpp/include/status_codes.h index 83eb667..56a5b05 100644 --- a/cpp/include/status_codes.h +++ b/cpp/include/status_codes.h @@ -8,7 +8,11 @@ enum class StatusCodes { SET_STATE_ERROR = -6, SET_TIMEOUT_ERROR = -7, BUFFER_ERROR = -8, - NOT_FOUND_ERROR = -9 + NOT_FOUND_ERROR = -9, + CLEAR_BUFFER_IN_ERROR = -10, + CLEAR_BUFFER_OUT_ERROR = -11, + ABORT_READ_ERROR = -12, + ABORT_WRITE_ERROR = -13, }; #define status(status) static_cast(status) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index e39028e..fbb85b8 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -266,6 +266,43 @@ auto serialGetPortsInfo( return portsCounter; } +void serialClearBufferIn(int64_t pointer) { + HANDLE hSerialPort = reinterpret_cast(pointer); + if (!PurgeComm(hSerialPort, PURGE_RXCLEAR)){ + errorCallback(status(StatusCodes::CLEAR_BUFFER_IN_ERROR)); + return; + } + return; +} + +void serialClearBufferOut(int64_t pointer) { + HANDLE hSerialPort = reinterpret_cast(pointer); + if (!PurgeComm(hSerialPort, PURGE_TXCLEAR)){ + errorCallback(status(StatusCodes::CLEAR_BUFFER_OUT_ERROR)); + return; + } + return; +} + +void serialAbortRead(int64_t pointer) { + HANDLE hSerialPort = reinterpret_cast(pointer); + if (!PurgeComm(hSerialPort, PURGE_RXABORT)){ + errorCallback(status(StatusCodes::ABORT_READ_ERROR)); + return; + } + return; +} + +void serialAbortWrite(int64_t pointer) { + HANDLE hSerialPort = reinterpret_cast(pointer); + if (!PurgeComm(hSerialPort, PURGE_TXABORT)){ + errorCallback(status(StatusCodes::ABORT_WRITE_ERROR)); + return; + } + return; +} + + auto serialOnError(void (*func)(int code)) -> void { errorCallback = func; }; From 80d97668e664f838408facec8a4b2ccd0eaa7a48 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 11 Jun 2023 13:00:36 +0200 Subject: [PATCH 32/50] docs: :sparkles: added purgecomm and waitcommevent in drawio --- schnittstelle.drawio | 88 ++++++++++++++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 28 deletions(-) diff --git a/schnittstelle.drawio b/schnittstelle.drawio index b668eed..b0837d2 100644 --- a/schnittstelle.drawio +++ b/schnittstelle.drawio @@ -1,6 +1,6 @@ - + @@ -356,6 +356,9 @@ + + + @@ -700,7 +703,7 @@ - + @@ -759,7 +762,7 @@ - + @@ -776,7 +779,7 @@ - + @@ -799,7 +802,7 @@ - + @@ -813,7 +816,7 @@ - + @@ -827,7 +830,7 @@ - + @@ -841,7 +844,7 @@ - + @@ -855,7 +858,7 @@ - + @@ -869,55 +872,55 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -926,12 +929,12 @@ - + - + @@ -940,12 +943,41 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file From d1a30257132ccc4ab5ea8dc62213b61e45807f0b Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 11 Jun 2023 22:11:15 +0200 Subject: [PATCH 33/50] docs: :sparkles: added overload param --- schnittstelle.drawio | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/schnittstelle.drawio b/schnittstelle.drawio index b0837d2..65d80ef 100644 --- a/schnittstelle.drawio +++ b/schnittstelle.drawio @@ -1,6 +1,6 @@ - + @@ -948,33 +948,42 @@ - + - + - + - + - + - + + + + + + + + + + From 966edc5b0a996cc9e343eb169df85165c5396d4e Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 18 Jun 2023 15:45:20 +0200 Subject: [PATCH 34/50] new feat --- cpp/include/serial.h | 2 ++ cpp/src/serial_windows.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/cpp/include/serial.h b/cpp/include/serial.h index bebe2cf..333c4cd 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -79,6 +79,8 @@ extern "C" { MODULE_API auto serialOnWrite(void (*func)(int bytes)) -> void; + MODULE_API auto serialTestEvent(int64_t pointer) -> bool; + #ifdef __cplusplus } #endif diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index fbb85b8..2def1cb 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -1,5 +1,6 @@ #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #include +#include #include "serial.h" namespace { @@ -302,6 +303,32 @@ void serialAbortWrite(int64_t pointer) { return; } +auto serialTestEvent(int64_t pointer) -> bool { + HANDLE hSerialPort = reinterpret_cast(pointer); + + DWORD dwEventMask; + if (!SetCommMask(hSerialPort, EV_RXCHAR)) { + std::cerr << "setcommMask is fucked\n"; + return false; + } + + // Warte auf das Ereignis + DWORD dwEvent; + + + if (!WaitCommEvent(hSerialPort, &dwEvent, NULL)) { + std::cerr << "waitcommEvent is fucked\n"; + return false; + } + + // Überprüfe das erhaltene Ereignis + if (dwEvent & EV_RXCHAR) { + return true; + } + std::cerr << "event nicht ausgeführt\n"; + return false; +} + auto serialOnError(void (*func)(int code)) -> void { errorCallback = func; From 7bde00d1bbbe769b8c826b4a943447bfbfd4559c Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 18 Jun 2023 15:46:22 +0200 Subject: [PATCH 35/50] add cpp feats --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 451396c..2e6998b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: push: branches: - dev - - testing + - add-cpp-feats paths: - 'cpp/**' - '.github/workflows/build.yml' From 45f742c67e8ad2665a5d47b003b51bd26cae8d65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 13:48:25 +0000 Subject: [PATCH 36/50] Commited compiled binaries --- ts/bin/linux.so | Bin 22280 -> 22280 bytes ts/bin/windows.dll | Bin 19968 -> 23040 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/linux.so b/ts/bin/linux.so index 74202dc86a99326321bd5d32306e1b0bc7dae47b..d14b23a8a111a3b56e1478afe35a1f515a23a67a 100644 GIT binary patch delta 53 zcmV-50LuS}t^tUy0kGHt6t><>kdQ#${UDQL%d_kP9zFstF_Q{GB(pF< L_!I#xlPOl;vAq|@ delta 50 zcmV-20L}l1t^tUy0kGHt6zh{&`<3`K@H2!s|6vd%f$?0HLbL1w9zK%{K_s&-LHZN{ IE0ZZ!-&oof2mk;8 diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 28c09d04a525e99b68977ba7bf5756e887562ab0..9e25899c662c7f773e0e9266f33d4aa35fed96c6 100644 GIT binary patch literal 23040 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 BTO0rY From 90a888f99178ebc4ba851f7922b6b155929fde1d Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 18 Jun 2023 16:29:47 +0200 Subject: [PATCH 37/50] feat --- cpp/src/serial_windows.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 2def1cb..e528913 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -33,7 +33,7 @@ auto serialOpen( 0, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, + FILE_FLAG_OVERLAPPED, NULL ); @@ -307,7 +307,8 @@ auto serialTestEvent(int64_t pointer) -> bool { HANDLE hSerialPort = reinterpret_cast(pointer); DWORD dwEventMask; - if (!SetCommMask(hSerialPort, EV_RXCHAR)) { + + if (!SetCommMask(hSerialPort, EV_BREAK | EV_RXCHAR)) { std::cerr << "setcommMask is fucked\n"; return false; } @@ -322,7 +323,7 @@ auto serialTestEvent(int64_t pointer) -> bool { } // Überprüfe das erhaltene Ereignis - if (dwEvent & EV_RXCHAR) { + if (dwEvent & EV_RXCHAR || dwEvent & EV_BREAK) { return true; } std::cerr << "event nicht ausgeführt\n"; From e774429213f23b68fef9dc1fc12e7bfd28cc6e00 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 14:32:33 +0000 Subject: [PATCH 38/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23040 -> 23040 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 9e25899c662c7f773e0e9266f33d4aa35fed96c6..7130766c24c55aa5d7f57d53791147792cb2fd5b 100644 GIT binary patch delta 3409 zcmZ8j4RBP|6@GV0u%u?!jR#|Vnt1vq(-oA zWJTG$St=f67?l|ZP;AvHWf6ghT?}NyG*}gXpo5NWX;~U7Xb}TLef`ecjZ$~!-0wT* zo_FrO=bdx+^&Jp>2gJTaVOnRSWHCv+O=aSOI1tP?Cs*SV<=8DJ& zeU?<|o?=Ddsk$wzG8T9X+>8g>v_W3~ap5xgmrB)uIMZ>8sag(m6&KLJltL0JQra_Ctl$Jpe%S5q<d*hVc#FQyZx{DdbHNf*ZYJ$0 zxDQ9u3zmsCS~jsx93h&hcw3BAoz-n?b0ld~sHZ^HEcYOPI7mOv6REqP>+X>1J8r*s za86A~4J=Yzs`e+{w&(}{vZ(($_Lpz*zvfX~Ek;Ch)T4_%{{GJ&BJMMbXlN=doH%u~ zUXsEdbY~KKrv-?plt)nQp!ll zz*0}M9JyK9QAI}yMf#H1>3zE2(URN`LyP`_E`LA=9J4F7PUF*hE#t{F@~98{gBzes>p^IN)`M~YEZ%jNgN7dw7UKF*JjF;=; z6pvbU+avUjveG)hwTwbeLm}6Eh%VA?64g0N#1pjCSs;#5uXC+MVkdt~q8gCD$)K;C z6NQ=5O4g;lhHFW8UYV_@t6`aFOUVq|v1**dH!M7U`5@@1*`vvC(76)#)b&uqay%a4 z9iX-ZX!?;0)^y+2sNoVWqk#l)f8jqWscA~(!na`Y4JU@>S3tO<{qi2LmTQCd?grnm zJuC;H%Ep8Sb_ibYdmLvxGtczos<;R3$`_4a^jLhBwU}-87p|azDa9$BP|}|Z4f>of z(}gJxGOc*& zDb2cV1!a{@_d3|XeK{FKx5XRk@R6i=DcZcM?u;bE#owkRqP7|iqh8^69yX-keAoo_ zR2k~zci3Fyx4a4LzX5f-6?swv%zdFm=*6sS@_GipJX&FRdeL!y`7)jj%O_ysb;I%> z!8qGt`DBb8O6157gt#J)@uT5*!At*O*DL~8H1-*9A2$lzN$1OAMm!j@V2k>9=p5hi zhQX1M<~x@-@4}&)(IdL;CwxpTIEJV-dhE*TRJpQ>X>Iv*)8CS4Pq~6i@ML*m#XR(Y zs?Etz{d2D9HWiu{Ql~NZM0ub+H>x*MX2or*PnNR(Qe}bq?fW?Jepb;O%Le)H#dkyW zWT?KT2k<7Po&?<%#Ay$40^n0RID)M|F%^pLOh)h#)_)28BIgLT-2*~WZqy^^XaLoKcpSSKd$P# zk+H5Gg|dU@RF@TQHzP{q#ml7%?AG93jV5YyQ!5wvX(=pq9q=wk)+2ULy&{Gw<8e#bE%(> zFC$3b3Wx_fnRxANdayr>PyR+FV`GCPnd0LU4z~d_`}*i;<6D)_!}wS` z)_Vej$s^?@n4|=^$;I|jEZKRi)y0Q;pg46Ug`a81<2g351Ra7$T_F|sm z23An61UZc<{#^qX_&+#J{#gYNvKN2B%!H)_@~@Z|jv}pt#NB2*By9kH>Xv!dpT1>2 zDL+BVuT7Wo*JXcU?aJyL-`G+3?8aYH4&v+%X3icEqB(e~IVIEEglu-+feZq_g)|}& zW58OxFSa)VdmxX2_X1y!amHgYejIoy#u-IL)IT1$3gVg<#ceS=HF-ss!FvoU@SSdT*TAkG5dLy!gFTwE_y zd!s>LgmMYO4>OvOuSN6lPJo*sJHQzaBZrs3-v(ZXOq>sKV{?#hJnI2oL1kCMo{Gx8 z3zgjnz7+Tjgb%>Df~y_&RbG&fA&a1#0X~T@v`%owy%65eN5IQ5J_f8sv8;ieu`9;W zn35aPg=f*6(h^87IJXm5<41U{j9h-DH~=FTS=BR8m~e$LXXGkj&e#sIa!}xbpjf2K F{{wDf$TI){ delta 3379 zcmZ8j3s6+o89ry(%Px=Qxhu#+R=A72T|pET6zpOz4Jcz!Y1HV%_tdDdVDS~G8ynW^ zwlPPI_0iF3W2ZIg#H^;MvBQYEB;q4#eT>y$YMW)SsirfEj?L}&-(3=$JM*9K`~P#! zf6o8k|D1cG#=a`~5hyD#4GH4o3tW2~>m7h$v*_+*h3zK>rO zN5kv*FGQH>0uK|HOR^CLXKBpm_DIa?V|NxhF;^fjvbsfRZNI{iC+{uBPa1+iEEK7d4`x0 z^<#cc?2k&}zY!;*7FcWTj6Le&O_t-yjJ#b8^u~+g=y3@WI(iiM{T#(>Igf+{E{ToN z8T=!$FFKD~M0d24|4lrJp2nw$8p~RqAi6ABhOc5pz>>z_5K_!oe$`hI<2R5JU(3ge z>G7|Z{3V6*hbm+ucC=Lv7~^=T;bTEOU8&EcPHaTn6vo-2*U+JSjWDHb;%|yADNFb};_H+;ULz_~XBr0L z#IDrE2u(|!%L~NZv{JrXh%|XIr+un7HQVwe#x{30M<9Z22&8{>bxEhcJx_($hvpl`-ab$&FZ% zRjC6mk0k;YEbft>jb%);eKADeLaJAJqS@XR?de5%YrZu-(`?Hy3Y${r$d!uPBrEXm zoY$q+%8ib1-g zFJ~nujtMFmfIwRW4SFCvSyhpLM9EZXpJ~!VaW!jF{^3y+ZL4K4nR*_zZjZDJ9Rbr* zP1|y#-6h-I6%)loIf-YBnet0TR&=(SN;><#!t&n9ntOo%tXff}23i!Q6N#7Wq!jmC zHQPJlj=aEni%J!B8iP75xr{@i+3aG5BOA58!I8>ui(QW87CQ~{RGAg8WQ!N^*=c-) zD9TytQ(r zX4@o6a>um(fDCjHCxd7l1d4jM7B*Mco--{9o9PnUJ| z^i;k$(=iJ{RqFTDf=EnPeFN}XqJ{3L`3hB5mDrj$#$bpPr}JdKT=eCo=dZvSP}J%; z#Z&!2vn_?Db}FNYFAQ>TU2;&LBSz(qU(}aF*0RNo8uIB zg^D-Hn!`2Q6-3)X3BZ_~t{!atz(^>XBM;7dNZ$s%k8*_C-T{t#QraOds`H{p?mW0{RmaHH^*;7HJge1#)spu(RNMooVPyYSkROu@lX4UvIDJZ5g%@ z+=%8#(|L^E2JKIu8-GXVm-P0O-X780Z}c`U_N3 z8ud0?Z+nHUup%cDoIVJ_NAYg4BYk}f?`RrX26f{dv92&5pT&cPhhuKzd#bpf#;qQU zI_VILigMFGGQmq=@4q#T?&f;H#61J6pY`3@D$;36)}{-IMbj4CT-ZS;x;F>YK? zcYY5sM1QvW))u#NUhjKSvYvjad}~T~8fxe_Y7&G_z^oF+=0FZYcH-*phU~%RpEQQC z0?7Pva1_UweHdf)xRn?Rb^sqbq?1*O8D&|e4{{hQYFgCNB)_^sUlcPcK?ZHI)5$7f zd+@ETg*koim(32t&s{|MJhaQoGjOkX%H_CM;M!m`h99d1#<$HEC(Hj_unxuzb=b?# z(HLB8Xt;re7aN>p-wxB#eQ175eKD_y{S~W*>_P{nX$j8zL&zR1|FA%0PnJz&8{3C5ZhU|q!;jk+Kj{SLcHjBRsQA{Qxrp-xxCD5L>O2XG;N(&mE`z6qfX9RXep@f$!Zie)M6g!LhggUJ#g zt1uUblZ}D2fYWiJYP?z-L@K`=1VBhdR`?baB2;0-38_km6BdrgLgW;<-Nzd=>3`Bf BwG99O From dbeb3f03ac7bc575da3e3088524daa729eb3b9cb Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 18 Jun 2023 16:37:33 +0200 Subject: [PATCH 39/50] feat --- cpp/src/serial_windows.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index e528913..4116182 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -136,8 +136,10 @@ auto serialRead( DWORD bytesRead = 0; + OVERLAPPED o{0,0,0,0}; + // Error if read fails - if (!ReadFile(hSerialPort, buffer, bufferSize, &bytesRead, NULL)) { + if (!ReadFile(hSerialPort, buffer, bufferSize, &bytesRead, &o)) { errorCallback(status(StatusCodes::READ_ERROR)); return 0; } @@ -174,12 +176,14 @@ auto serialReadUntil( data = ""; + OVERLAPPED o{0,0,0,0}; + for (int i{0}; i < bufferSize && data.find(std::string(static_cast(searchString))) == std::string::npos; i++) { DWORD bytesRead; char bufferChar[1]; // Error if read fails - if (!ReadFile(hSerialPort, bufferChar, sizeof(bufferChar), &bytesRead, NULL)) { + if (!ReadFile(hSerialPort, bufferChar, sizeof(bufferChar), &bytesRead, &o)) { errorCallback(status(StatusCodes::READ_ERROR)); return 0; } @@ -217,8 +221,11 @@ auto serialWrite( return 0; } + OVERLAPPED o{0,0,0,0}; + + // Error if write fails - if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, NULL)) { + if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, &o)) { errorCallback(status(StatusCodes::WRITE_ERROR)); return 0; } From 1bfb16c535de49d48a19eaf6e2a2ca141dca46a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 14:39:06 +0000 Subject: [PATCH 40/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23040 -> 23040 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 7130766c24c55aa5d7f57d53791147792cb2fd5b..b8be5b04db43c933297d0deed7dffea800788299 100644 GIT binary patch delta 5707 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 R;8hSAG4$&&E%=-Me*xs>2^|0c delta 5609 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 Date: Sun, 18 Jun 2023 16:43:33 +0200 Subject: [PATCH 41/50] f --- cpp/src/serial_windows.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 4116182..99db51c 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -226,6 +226,8 @@ auto serialWrite( // Error if write fails if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, &o)) { + DWORD dwRet = GetLastError(); + std::cerr << dwRet << "\n"; errorCallback(status(StatusCodes::WRITE_ERROR)); return 0; } From 5c3c7fe2cb27a842b963424c9c17eab296e682ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 14:45:16 +0000 Subject: [PATCH 42/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23040 -> 23040 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index b8be5b04db43c933297d0deed7dffea800788299..3d58ab46e736f8b69c101c0ec01b7cb7d7fa28ac 100644 GIT binary patch delta 6763 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 delta 6636 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 Date: Sun, 18 Jun 2023 16:48:04 +0200 Subject: [PATCH 43/50] d --- cpp/src/serial_windows.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 99db51c..ceb9a36 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -227,6 +227,18 @@ auto serialWrite( // Error if write fails if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, &o)) { DWORD dwRet = GetLastError(); + LPSTR errorMessage = nullptr; + DWORD result = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + nullptr, + dwRet, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + reinterpret_cast(&errorMessage), + 0, + nullptr + ); + std::cerr << "Fehlermeldung: " << errorMessage << std::endl; + LocalFree(errorMessage); // Speicher freigeben std::cerr << dwRet << "\n"; errorCallback(status(StatusCodes::WRITE_ERROR)); return 0; From a1901a84baf44bbf386a1bc6ccd4afec5c2b925a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 14:50:02 +0000 Subject: [PATCH 44/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23040 -> 23552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 3d58ab46e736f8b69c101c0ec01b7cb7d7fa28ac..32e727d0fdf004a998204a6ad6494c60ab5aa9fd 100644 GIT binary patch delta 9271 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 From 2533b36e674f7e8f72f792052bce6bc5bf76d8b8 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Sun, 18 Jun 2023 16:53:04 +0200 Subject: [PATCH 45/50] feat --- cpp/src/serial_windows.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index ceb9a36..85078c2 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -221,7 +221,8 @@ auto serialWrite( return 0; } - OVERLAPPED o{0,0,0,0}; + OVERLAPPED o; + ZeroMemory(&o, sizeof(o)); // Error if write fails From 65834e121d2b867c9ac4a90308af023398a61be6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 14:54:35 +0000 Subject: [PATCH 46/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23552 -> 23552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 32e727d0fdf004a998204a6ad6494c60ab5aa9fd..4040a8f7515580edbdf0535cbc9b0b4abc8121cc 100644 GIT binary patch delta 4075 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 M0-tHK&bui62cv`YE&u=k delta 4097 zcmZ8j3v?9K8J@ezB%8-(^VkV_5V9e=Bq8sFkPs4BWU-TypcW7m(0D-b@DL8}N-Wro zY@#m1R^-;|@n}nxS~>NBjgRo`LSii+SQu}OGbGrAA_yu%!f$yFyTrcgh%sDaQNBV!7&zMz z6KOKA7xPytpz@0Wu9%FIu??j z`z=!&l)fha%}kBA@pCbS6{{q8F4d&j2weAkG*=Mx8I4L81#l32gWpm;I`1_;HTGHd z1wR!#oxRRev2mht8)b5N*8mP_NJi}vT{s~OyTR}rzG2< z=##xe`Lf@1V4@(X!~8&eHao>Xj-SZNxzSW+5R!SVX%1V?eWr)lWFC=_%aVCsLKfS} zXC+j#k&cHGf(Bxe8rcHAJ?U4K=Q62aLD?@oimEgyN7Wukz-|CLqceg+@E(qs?T??< z5b?ibh_B0R zVuk!*=I!hwE{$EmM)<>HmlzU~_}Q_O*rtx8EEBt_G9dd_+Z?jbX+5sO#ok+G<@BH#S*ZIGC<#{z(QkpK zie7>@>!L2%dtGxyse{qz7d8Dqn$|a<5#6VEkNP_QW%hWspFf|SW`7_?_Y$qX4THgS zbrE=^>IgZHtOyK7t5f(#*?A>DgQzXwCQ-6l8)Bl>au9<Mcep}pt$?fm$W2m9o+4Z=%0=)WQ6oy$a3rA{EYeI||14qStY)+b|2!?`k+P%X2 z4co9%y@+RJpn?2&iO3*&> zb0A^~gS`sWBOb!Y^x|Mw_J~+l-D1~w0;Nc6R1S4E-6;smr-%h7G|k;2FEuR&fu2d{ z{W*_#jv<@M69_J@?TkBGeoXotmt$y)LuF{Kzd+aJmea1twiE7n^l16BP~)zJld*d1 z&y`|rceR?00M(V)Z1ociUV9JZv^o2*WaSCRmSgG%psw_1p7CB_Y7XCNufy~6iG56} zlk&kyhz&YzWmJbjizcn*2@{q|M-Ubr^aKQ4c>>XD(ukQqI>FAKw{Xg8Z($^$Dx+N@@1t>6%#%igWq7yeZNn#YofJ%bY&(L6C#dPDNb9 zi}EWUB z4xhLT)Ql@#R#%O;*BTU?z|tx3iL*iB`i(g5%XLYuBZ%m{R(2tj_*#ji=HQJ0g zsWp4>2LZeNkfHd|d#F|3FF;SOL~QCViUHx*;N0Ja8q@1jBYOiz@SngyR>WEo`@}!v z)rO^q9w+g2sDffUM6_;D^njw>4vM}o)roc$r!HAY%T zg$%FQ&QT#I9>?9KYTx5p@pjkX9dXRPeZm4H<-nQMq)a{ajuCjR)KEUzKhM@IQ(t{! zQ!=IniT7w7)4W#9R11MYZ?(^2mNM zUfrw5k??wAad4LC4~6#{b0^B)`iY_Xzh1I~}}(Bm8B zKjphhidZ#2RWiM#@-lRe`Fe4be{X5BsyUEsqh?>ybwi=^1DpBG(h^(OaL54LrF*6S zPDOecKf<#2TH^X@`dQ*nl@?6+HST~ub;lQ)Mo*&yG1EJk55pcY31etKJGS1m)lmM- zWTBO|coeUz4e{H4f?=Y6Lmh8aJk8kdj)qAanZcjl(NlG^p}~)n^CI8@Z2LQSpXom$ z3ja=50Qva4x(?V-EeKlyfm%396ol4nyoq!L#|pwi$PlKmgU_$Yt-2K_tHgD0i_5m= zep<8{S_kl`%vM$=?0{_e|FRZgTgR(4iy{m{DUYqYi_prtarj5|)!7mcPr>~k85y;w z5jd$ezz@{r6@3KZ5CqNtC8<+Lk1_~R6^1gBM>YwPWF5 z%txBn5x{(IpEfgxG;|3p!^3kDkTMkvzRBgdY5^(SH!X7wS>a9;HbU|&U}D&69q7LR zW`_BFpnHCxCqDQCeN0A_kTJ`k z7eU?#{51Nw4)k-t#{sk$;TO=?jgapImTIsT=rj+AZa^~_!j}M)fd!pV3Lv@$*af%` zG~wN08plvr4_Jq}IEun=0WF~E@KERdqcMc3*Yc47Vd|)Dpb1kq Date: Sun, 18 Jun 2023 17:00:40 +0200 Subject: [PATCH 47/50] remove overlapped --- cpp/include/serial.h | 2 -- cpp/src/serial_windows.cpp | 59 +++----------------------------------- 2 files changed, 4 insertions(+), 57 deletions(-) diff --git a/cpp/include/serial.h b/cpp/include/serial.h index 333c4cd..bebe2cf 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -79,8 +79,6 @@ extern "C" { MODULE_API auto serialOnWrite(void (*func)(int bytes)) -> void; - MODULE_API auto serialTestEvent(int64_t pointer) -> bool; - #ifdef __cplusplus } #endif diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 85078c2..6b33c9c 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -1,6 +1,5 @@ #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #include -#include #include "serial.h" namespace { @@ -33,7 +32,7 @@ auto serialOpen( 0, NULL, OPEN_EXISTING, - FILE_FLAG_OVERLAPPED, + FILE_ATTRIBUTE_NORMAL, NULL ); @@ -136,10 +135,8 @@ auto serialRead( DWORD bytesRead = 0; - OVERLAPPED o{0,0,0,0}; - // Error if read fails - if (!ReadFile(hSerialPort, buffer, bufferSize, &bytesRead, &o)) { + if (!ReadFile(hSerialPort, buffer, bufferSize, &bytesRead, NULL)) { errorCallback(status(StatusCodes::READ_ERROR)); return 0; } @@ -176,14 +173,12 @@ auto serialReadUntil( data = ""; - OVERLAPPED o{0,0,0,0}; - for (int i{0}; i < bufferSize && data.find(std::string(static_cast(searchString))) == std::string::npos; i++) { DWORD bytesRead; char bufferChar[1]; // Error if read fails - if (!ReadFile(hSerialPort, bufferChar, sizeof(bufferChar), &bytesRead, &o)) { + if (!ReadFile(hSerialPort, bufferChar, sizeof(bufferChar), &bytesRead, NULL)) { errorCallback(status(StatusCodes::READ_ERROR)); return 0; } @@ -221,26 +216,8 @@ auto serialWrite( return 0; } - OVERLAPPED o; - ZeroMemory(&o, sizeof(o)); - - // Error if write fails - if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, &o)) { - DWORD dwRet = GetLastError(); - LPSTR errorMessage = nullptr; - DWORD result = FormatMessageA( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - nullptr, - dwRet, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - reinterpret_cast(&errorMessage), - 0, - nullptr - ); - std::cerr << "Fehlermeldung: " << errorMessage << std::endl; - LocalFree(errorMessage); // Speicher freigeben - std::cerr << dwRet << "\n"; + if (!WriteFile(hSerialPort, buffer, bufferSize, &bytesWritten, NULL)) { errorCallback(status(StatusCodes::WRITE_ERROR)); return 0; } @@ -325,34 +302,6 @@ void serialAbortWrite(int64_t pointer) { return; } -auto serialTestEvent(int64_t pointer) -> bool { - HANDLE hSerialPort = reinterpret_cast(pointer); - - DWORD dwEventMask; - - if (!SetCommMask(hSerialPort, EV_BREAK | EV_RXCHAR)) { - std::cerr << "setcommMask is fucked\n"; - return false; - } - - // Warte auf das Ereignis - DWORD dwEvent; - - - if (!WaitCommEvent(hSerialPort, &dwEvent, NULL)) { - std::cerr << "waitcommEvent is fucked\n"; - return false; - } - - // Überprüfe das erhaltene Ereignis - if (dwEvent & EV_RXCHAR || dwEvent & EV_BREAK) { - return true; - } - std::cerr << "event nicht ausgeführt\n"; - return false; -} - - auto serialOnError(void (*func)(int code)) -> void { errorCallback = func; }; From 38e62d2b3ed17dbffaedaea8ef411f01b1a63e72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Jun 2023 15:02:35 +0000 Subject: [PATCH 48/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 23552 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 4040a8f7515580edbdf0535cbc9b0b4abc8121cc..8f5a12836f607f8e0cb52b5ae7c802d09e5f0e4d 100644 GIT binary patch delta 9388 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ⅈ8`lMW!A+Hz zYazBV-8DRUZgOKDa60<@M$@H9%E2l>daD9AA>?0(^(}jlV({PWo+|jYRw( z`ItV7Rx7sN-9 z-h%veO*{veU!Ne4@A>R*qz2IM0NjHVCZ2#DNOvON3-~)NKM3fWsNz%a*y-+l`y||5 zfS%wFk)A}J;A2R?LZ09g8lK=&8lLX3GH_=_ebHUkTrE#`TJ>6dP4u6HO8n7o@On1%Z<6X*$Ak*-Fb?!}%*BE8Z582yHI zA>jd=kO)t|oBd}bl3@=Z{a=ujCwNxNe-3E9TE!EbujLm4ejlm$1{EIF@C5s`Ji+NR z)xNFj3nd%{DGF=1^62+{}$k%kVrQAUNLT#n$HJpL2}%HJ1ao? zU-YVwr|**V-}4dAqkxwdtMmj*X5)?!G;;v=A?-w-V1Ehb9P;%4eoik%n;T&Rz$PS` zKVd-2HP9{a3jyz)3yAzT0TW0<&w%$|i*~?20BD$pzL3uXd>W|+d4g{s(OC5J8M_>b z@`ZqPNHlK=?$Yx3T?|`?)QYzFZ4A2yX(RIV4TSFKUvsOF?$HY&KS8=D-+??qx+AAN zLAvLrJi*OK`NR|O9VC+BAJ6|(4d}#o*aA$4(Hfw;ajfz4;PJy~#!**;7MqiseM;kn z6&stIEF1j65Pm~dK5ceU@idD+P}@?6Uq6*kTT#7a=DcYZT$BXreE1!dzkJ#ze`s38 zqP*;dzEH^Dysl}J1q=eA@@Y5*EeO>%_?vy9naz#0!In@)Z1pQx&pcj8#Rj_db zV(0b#&~RmHwNsplFl;w|gw=%Ke&Jm{&4;`F4K26(gVQXLMtdzC2+F6``(V@7ld*cVahtB)sNU7<&QQz+WP2;M+YArdbItqosaE$?D5C;JhtyKG_JwE1JJN* S=dQ#qc^9((c>W*Jz<&UBYHTL} From 1429e69b174e7f6643253829158ce1225eb81ae0 Mon Sep 17 00:00:00 2001 From: Katze719 Date: Mon, 24 Jul 2023 19:24:38 +0200 Subject: [PATCH 49/50] test: :zap: last working stand --- cpp/include/error/error.h | 3 + cpp/include/error/init_comm_state_errors.h | 7 ++ cpp/include/error/init_timeouts_errors.h | 7 ++ cpp/include/error/open_errors.h | 7 ++ cpp/include/serial.h | 2 - cpp/include/status_codes.h | 2 + cpp/src/serial_windows.cpp | 111 +++++++++++---------- test.ts | 55 +++++++--- ts/Serial.ts | 25 ++++- ts/interfaces/serial_functions.d.ts | 6 +- ts/register_serial_functions.ts | 20 ++++ 11 files changed, 166 insertions(+), 79 deletions(-) create mode 100644 cpp/include/error/error.h create mode 100644 cpp/include/error/init_comm_state_errors.h create mode 100644 cpp/include/error/init_timeouts_errors.h create mode 100644 cpp/include/error/open_errors.h diff --git a/cpp/include/error/error.h b/cpp/include/error/error.h new file mode 100644 index 0000000..8a7efff --- /dev/null +++ b/cpp/include/error/error.h @@ -0,0 +1,3 @@ +#pragma once + +#define error(status) static_cast(status) \ No newline at end of file diff --git a/cpp/include/error/init_comm_state_errors.h b/cpp/include/error/init_comm_state_errors.h new file mode 100644 index 0000000..5de7bfb --- /dev/null +++ b/cpp/include/error/init_comm_state_errors.h @@ -0,0 +1,7 @@ +#pragma once + +enum class initCommStateErrors { + GET_COMM_STATE = -1, + SET_COMM_STATE = -2 +}; + diff --git a/cpp/include/error/init_timeouts_errors.h b/cpp/include/error/init_timeouts_errors.h new file mode 100644 index 0000000..7cb8d2e --- /dev/null +++ b/cpp/include/error/init_timeouts_errors.h @@ -0,0 +1,7 @@ +#pragma once + +enum class initTimeoutsErrors { + GET_COMM_TIMEOUTS = -1, + SET_COMM_TIMEOUTS = -2 +}; + diff --git a/cpp/include/error/open_errors.h b/cpp/include/error/open_errors.h new file mode 100644 index 0000000..ec000bc --- /dev/null +++ b/cpp/include/error/open_errors.h @@ -0,0 +1,7 @@ +#pragma once + +enum class openErrors { + INVALID_HANDLE = -1, + SET_COMM_STATE_ERROR = -2 +}; + diff --git a/cpp/include/serial.h b/cpp/include/serial.h index bebe2cf..601c966 100644 --- a/cpp/include/serial.h +++ b/cpp/include/serial.h @@ -1,8 +1,6 @@ #pragma once -#include #include -#include "serial.h" #include "status_codes.h" diff --git a/cpp/include/status_codes.h b/cpp/include/status_codes.h index 56a5b05..621f7d2 100644 --- a/cpp/include/status_codes.h +++ b/cpp/include/status_codes.h @@ -1,3 +1,5 @@ +#pragma once + enum class StatusCodes { SUCCESS = 0, CLOSE_HANDLE_ERROR = -1, diff --git a/cpp/src/serial_windows.cpp b/cpp/src/serial_windows.cpp index 6b33c9c..3001d37 100644 --- a/cpp/src/serial_windows.cpp +++ b/cpp/src/serial_windows.cpp @@ -1,9 +1,12 @@ #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #include #include "serial.h" +#include "error/error.h" +#include "error/init_comm_state_errors.h" +#include "error/init_timeouts_errors.h" +#include "error/open_errors.h" namespace { -DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0}; std::string data; } @@ -12,20 +15,66 @@ void (*errorCallback)(int errorCode); void (*readCallback)(int bytes); void (*writeCallback)(int bytes); -auto serialOpen( - void* port, +auto serialInitCommState( + int64_t handle, const int baudrate, const int dataBits, const int parity, const int stopBits -) -> int64_t { +) -> int { + HANDLE hSerialPort = reinterpret_cast(handle); + DCB dcbSerialParams = {0}; + + if (!GetCommState(hSerialPort, &dcbSerialParams)) { + return error(initCommStateErrors::GET_COMM_STATE); + } + + dcbSerialParams.DCBlength = sizeof(DCB); + dcbSerialParams.BaudRate = baudrate; + dcbSerialParams.ByteSize = dataBits; + dcbSerialParams.Parity = static_cast(parity); + dcbSerialParams.StopBits = static_cast(stopBits); + + if (!SetCommState(hSerialPort, &dcbSerialParams)) { + return error(initCommStateErrors::SET_COMM_STATE); + } + + return 0; +} + +auto serialInitTimeouts( + int64_t handle, + const int readIntervalTimeout, + const int readTotalTimeoutConstant, + const int readTotalTimeoutMultiplier, + const int writeTotalTimeoutConstant, + const int writeTotalTimeoutMultiplier +) -> int { + HANDLE hSerialPort = reinterpret_cast(handle); + COMMTIMEOUTS timeouts = {0}; + + if (!GetCommTimeouts(hSerialPort, &timeouts)) { + return error(initTimeoutsErrors::GET_COMM_TIMEOUTS); + } + + timeouts.ReadIntervalTimeout = readIntervalTimeout; + timeouts.ReadTotalTimeoutConstant = readTotalTimeoutConstant; + timeouts.ReadTotalTimeoutMultiplier = writeTotalTimeoutConstant; + timeouts.WriteTotalTimeoutConstant = writeTotalTimeoutConstant; + timeouts.WriteTotalTimeoutMultiplier = writeTotalTimeoutMultiplier; + + if (!SetCommTimeouts(hSerialPort, &timeouts)) { + return error(initTimeoutsErrors::SET_COMM_TIMEOUTS); + } + + return 0; +} +auto serialOpen(void* port) -> int64_t { HANDLE hSerialPort; char *portName = static_cast(port); - dcbSerialParams.DCBlength = sizeof(DCB); - hSerialPort = CreateFile( portName, GENERIC_READ | GENERIC_WRITE, @@ -38,57 +87,9 @@ auto serialOpen( // Error if open fails if (hSerialPort == INVALID_HANDLE_VALUE) { - errorCallback(status(StatusCodes::INVALID_HANDLE_ERROR)); - return -1; + return error(openErrors::INVALID_HANDLE); } - // Error if configuration get fails - if (!GetCommState(hSerialPort, &dcbSerialParams)) { - // Error if close fails - if (!CloseHandle(hSerialPort)) { - errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return -1; - } - - errorCallback(status(StatusCodes::GET_STATE_ERROR)); - - return -1; - } - - dcbSerialParams.BaudRate = baudrate; - dcbSerialParams.ByteSize = dataBits; - dcbSerialParams.Parity = static_cast(parity); - dcbSerialParams.StopBits = static_cast(stopBits); - - // Error if configuration set fails - if (!SetCommState(hSerialPort, &dcbSerialParams)) { - // Error if close fails - if (!CloseHandle(hSerialPort)) { - errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return -1; - } - - errorCallback(status(StatusCodes::SET_STATE_ERROR)); - return -1; - } - - timeouts.ReadIntervalTimeout = 50; - timeouts.ReadTotalTimeoutConstant = 50; - timeouts.ReadTotalTimeoutMultiplier = 10; - timeouts.WriteTotalTimeoutConstant = 50; - timeouts.WriteTotalTimeoutMultiplier = 10; - - // Error if timeout set fails - if (!SetCommTimeouts(hSerialPort, &timeouts)) { - // Error if close fails - if (!CloseHandle(hSerialPort)) { - errorCallback(status(StatusCodes::CLOSE_HANDLE_ERROR)); - return -1; - } - - errorCallback(status(StatusCodes::SET_TIMEOUT_ERROR)); - return -1; - } return int64_t(hSerialPort); } diff --git a/test.ts b/test.ts index f491174..7c9dc81 100644 --- a/test.ts +++ b/test.ts @@ -1,43 +1,66 @@ import * as serialLink from "./mod.ts"; +function sleep(time: number) : Promise { + return new Promise((resolve, reject) => setTimeout(resolve, time)); +} + const serial1 = new serialLink.Serial(); -const serial2 = new serialLink.Serial(); +// const serial2 = new serialLink.Serial(); let port1 = ''; -let port2 = ''; +// let port2 = ''; -while(!port1 && !port2) { +while(!port1 /* && !port2 */) { const availablePorts = serial1.getPortsInfo(); console.log('serial properties (available ports):', availablePorts); port1 = prompt('Port1 to connect:') || ''; - port2 = prompt('Port2 to connect:') || ''; + // port2 = prompt('Port2 to connect:') || ''; } serial1.open(port1, 9600); -serial2.open(port2, 9600); +// serial2.open(port2, 9600); + +// serial1.serialTestEvent().then(result => console.log('serial1.serialTestEvent()', result)); + const textToSend1 = prompt('Text1 to send:') || ''; -const textToSend2 = prompt('Text2 to send:') || ''; +// const textToSend2 = prompt('Text2 to send:') || ''; const dataToSend1 = new TextEncoder().encode(textToSend1); -const dataToSend2 = new TextEncoder().encode(textToSend2); +// const dataToSend2 = new TextEncoder().encode(textToSend2); + +console.log('serial1.write():', serial1.write(dataToSend1, dataToSend1.length, 10, 10)); +console.log('writing1:', textToSend1); + +await sleep(1000); + +console.log('serial1.clearBufferIn():', serial1.clearBufferIn()); +// console.log('serial1.clearBufferOut():', serial1.clearBufferOut()); console.log('serial1.write():', serial1.write(dataToSend1, dataToSend1.length, 10, 10)); console.log('writing1:', textToSend1); -console.log('serial2.write():', serial2.write(dataToSend2, dataToSend2.length, 10, 10)); -console.log('writing2:', textToSend2); +// console.log('serial2.write():', serial2.write(dataToSend2, dataToSend2.length, 10, 10)); +// console.log('writing2:', textToSend2); + +await sleep(1000); + + +const dataToRead1 = new Uint8Array(1024); +// const dataToRead2 = new Uint8Array(20); -const dataToRead1 = new Uint8Array(20); -const dataToRead2 = new Uint8Array(20); -console.log('serial1.read()', serial1.read(dataToRead1, dataToRead1.length, 10, 10)); +console.log('serial1.read():', serial1.read(dataToRead1, dataToRead1.length, 10, 10)); console.log('reading1:', new TextDecoder().decode(dataToRead1)); -console.log('serial2.read()', serial2.read(dataToRead2, dataToRead2.length, 10, 10)); -console.log('reading2:', new TextDecoder().decode(dataToRead2)); +// console.log('serial2.read()', serial2.read(dataToRead2, dataToRead2.length, 10, 10)); +// console.log('reading2:', new TextDecoder().decode(dataToRead2)); + + + + +// serial1.close(); +// serial2.close(); -serial1.close(); -serial2.close(); diff --git a/ts/Serial.ts b/ts/Serial.ts index 2f4e7e6..36d6bfc 100644 --- a/ts/Serial.ts +++ b/ts/Serial.ts @@ -28,11 +28,11 @@ export class Serial { }); this._dl.onRead((bytes) => { - console.log('onRead():', bytes); + // console.log('onRead():', bytes); }) this._dl.onWrite((bytes) => { - console.log('onWrite():', bytes); + // console.log('onWrite():', bytes); }) } @@ -63,7 +63,7 @@ export class Serial { serialOptions?.stopBits || stopBits.ONE ); - console.log(this.handle); + // console.log(this.handle); this._isOpen = true; @@ -92,7 +92,7 @@ export class Serial { timeout = 0, multiplier = 10 ) : number { - console.log('read from handle:', this.handle); + // console.log('read from handle:', this.handle); const result = this._dl.read( this.handle, @@ -151,7 +151,7 @@ export class Serial { multiplier = 10 ) : number { - console.log('write to handle:', this.handle); + // console.log('write to handle:', this.handle); const result = this._dl.write( this.handle, @@ -188,5 +188,20 @@ export class Serial { return ports; } + + clearBufferIn() { + this._dl.clearBufferIn(this.handle); + } + + clearBufferOut() { + this._dl.clearBufferOut(this.handle); + } + + abortRead() { + this._dl.abortRead(this.handle); + } + abortWrite() { + this._dl.abortWrite(this.handle); + } } diff --git a/ts/interfaces/serial_functions.d.ts b/ts/interfaces/serial_functions.d.ts index bdf5d6c..812f51a 100644 --- a/ts/interfaces/serial_functions.d.ts +++ b/ts/interfaces/serial_functions.d.ts @@ -47,5 +47,9 @@ export interface SerialFunctions { ) => void) => void, onWrite : (callback : ( bytes : number - ) => void) => void + ) => void) => void, + clearBufferIn : (handle : number | bigint) => void, + clearBufferOut : (handle : number | bigint) => void, + abortRead : (handle : number | bigint) => void, + abortWrite : (handle : number | bigint) => void } diff --git a/ts/register_serial_functions.ts b/ts/register_serial_functions.ts index ba28af5..c0c3657 100644 --- a/ts/register_serial_functions.ts +++ b/ts/register_serial_functions.ts @@ -102,6 +102,22 @@ export function registerSerialFunctions( // on error callback function parameters: ['function'], result: 'void' + }, + 'serialClearBufferIn': { + parameters: ['i64'], + result: 'void' + }, + 'serialClearBufferOut': { + parameters: ['i64'], + result: 'void' + }, + 'serialAbortRead': { + parameters: ['i64'], + result: 'void' + }, + 'serialAbortWrite': { + parameters: ['i64'], + result: 'void' } }).symbols @@ -112,6 +128,10 @@ export function registerSerialFunctions( readUntil: serialFunctions.serialReadUntil, write: serialFunctions.serialWrite, getPortsInfo: serialFunctions.serialGetPortsInfo, + clearBufferIn: serialFunctions.serialClearBufferIn, + clearBufferOut: serialFunctions.serialClearBufferOut, + abortRead: serialFunctions.serialAbortRead, + abortWrite: serialFunctions.serialAbortWrite, onError: (callback) => { serialFunctions.serialOnError(new Deno.UnsafeCallback({ parameters: ['i32'], From 3a2339fdfcfcea6d3c775e194c596f3c82b43580 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jul 2023 17:30:36 +0000 Subject: [PATCH 50/50] Commited compiled binaries --- ts/bin/windows.dll | Bin 19968 -> 19456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ts/bin/windows.dll b/ts/bin/windows.dll index 8f5a12836f607f8e0cb52b5ae7c802d09e5f0e4d..67147ecfaf8f4dafb4f2bcb3f0a897e4cff2343a 100644 GIT binary patch delta 7694 zcmeHLeOQ!L+CMWednW24=YdJ*whGk~1_PoFI%!7;V{{Q~-a&e#E zec$Ik=RW5?=iKK!)Ao$2twXiF&GE~BzWP=1&W{d`)0}hk;5^7%zdYOH!%us%Wcjn6 zJQ;_2ihyUoIxA!G&a(#tAYZufX-}byAN9~)k2_kXF5RRz9fB4ni9z$W=GROctMrT#Yc z`2@DdKR4(O>ipVh6CY&5{sQf@iz8ILNDJQ7ZL?zN)V0=BLB)Fw)b+5b#^!1^)!E&- zQ_98D)cLlK7QDZC9u?oAVlO>8Ler1X0`KNj>h@1%MVego#z?kNlVDvOiGIW@qv{;V z=Gvr3`}x$h!eAHssQ5SPysqC+MaAhi1FJ*44XQS8cS-~f`Hp+Pnb_V zpO0yBxp>NknHt9@Rq*pkrBT)&P@w)ioM{5%mV3f)%t)R|`VUlGW@^QZY_8RqplLp4 zW_M@A$g^9e%r3)7h)uMbTFXU@zRJ|(jfQ5SJF1{ue8=v-Mdh6YnX;{cDLI?rVKhq; z#F@%e2jaL(G_r}kXzzUua=ANd&Un+kaqQ#3Qk8}ogM^?QZtT_=SW!@d`q)es9~3p~ zyXmrS3>{LJA73#9f-P-GD@Abs8KL$??{GRjA#j@9fQ`OhQ*hp|}R9-qaedN97P%6HSnWT&i zgt6#Ji`1rAwq{bRS{=sDPfAdKs%1eTG3vWxSaL|7`lyzz2uV=A#kc%VEV?^9x&sfJEIld=T^C-~Zf$R9 zw~Jnz%WA4{RhewmWi!>;Tn!zxudI_9wT7^!R6|Ta`Pn={LsWgvdRW ziy!j1HG1o&A`8epj8-snSiGaryZN7z1UrfWHo{J}r((a&wXV%3j(H={!p4t=@4Sfi zHk(@;heU@N%UhI+N6OPZ)Op2Ex6RExyDfgy`J>+EZZ0PEh3B~e&a(p=h&v&c^zgh%op1Wx<_;|`_xsSE-si2A z>oMTbMA~OHrN}0Hf;L3gXw@C)Ez5bU#C^M;H{=HisidJtj$>IjSdUK67p7aMr+Qtu zy~h^os?*axi$M-9T#40f)Ol6EVHOq9Bh%|m@w1RUy{m)yIJS87)NMyc^(ONnjLbuI zrS@)iQYWN^BXRNx*B}^Diyc9f1cB?sYQ*QNUbpQH>3Ov|L8EgYSOt)89!FMly^T+xyX<$0jxakJ!X@J$7B` zfKA*oRGxkeduDSEUkZdf%jRzBrmnIcEJjN=qFwF~Pa>k3-gmI`U@&LFasL$TKzsLS z3<7xEhAeKB_l>>VI|7H?hfVA+cRpy)+raE4rX!&$p`3!j}>HjF6hH)K+G1#1kS5&JYQGQJ=+lCUk|UoqV< zQ;z4}@T9ssV1Z4Ev`HlomVp)##MNPtckjqTY;#FioQPx~36ukTbkIjU%`>Q*O0?jJ zZdG=Tb z(CB@yQD99GxsFZ@6^>4L9}3{d=oM29hE#&nCfW(j8Su7ELU&t_>bbVIWO>Q5+7-W8 z-s?ScS&|04`+13+>(ZvetDJv%9)%qLGkNOG@-ma2;{G+ zDv$%swY>;a9gf&3RJt^$<#GU})ulZGkc7iVLLTw7Omov8CE<4^%phc?FTbI?E(tX- z`w!jPOcqJ7maq*%o;t(A{w(A<1}xli)rCbB?&G8)d9^a(=Gx4c}DNfk?66*u<7^_<5wF=BHx04Ha7?9Gsu1v*(^uvlAbt>mTe3!_w+q{3erxog5Bc=VxA6fnIVvqlFmFU1)&a zC=>u~qQ(k9|3U^3X#u_zs}m*uKB|}wj^e*x^5nOJSJxGLezTq zhx!&A*LWqDcgu2f<}A->&T8HLninw~>g<=k(>XL#VSpGX0Jz8zVmjcs=KHzq$C%`Z zEklyj(n?op_kls!)(x@j*d0*`b9pcP4P#ltpRjF3Q|7YMvFTI4%}3M_k(NMjV+htt zho>cm@^L=N!%VU2tPF7!@%`O=4%sM|C`797;;(ss*_X5dzMYXvMyV%MdO8k;ZaXrE^HEH*zefAUK?n2@tyWp!zu13MaM6*bT1 zFn3~h)*8rtnkY2l1Hq;X2dg`DAxh`m;Zt18Cgd>EA#ufipUwV}n6ab}8fSk{pXLA< z9Csv#SHP8A?lm^&JNu1&nr9(uw(pvHF3yVFw|n8$Ye&-aN%%^)~S6MwH8dT0|Q-BX@kXVO!%ScfS=y)c};W{OX)<_{&eeM}PU;o!t)z37^{pBmzN@dVO} zB&3HkzohxLQqmCD;dK&(4VZrr3kJJW&|zr;52_))gRdd&PK?<5JRc2am5=Sc z715(^&O1Fpka;w*;%hj#G#{B|ONYq<;WM=D)4U25_uHrWD>%LeeVT&`*Mr9fq4#;v zqxL1mWa)uKlRen^k0 zv;;`PZY=`E;|ZITUVI5@AIOCuC0#`Y|1#39ge)ITJarqu_sYmtrX-}7%OWP}`-Z0O z*jwdfQDgy(Mo`g@pHX<}3}b&uNt`;(R~z-S+In6)*&!uW!l#sEmCMy~*(jH5^EsC(=(CU2fU$UlEf4HKD6Rl+>75Xj%!Y)v4ONx4s#{K zi@#z87b>_^!FmOo6f`gO*-uuGDEL*iPd}*OYYKKN_?Uw06|D53gA^-@GzIkvUaRtT zXd8Fr6UocUK(;HWsL8S=KCW58b4vYH1)~&wnu579IxurZK^3f2aJ=IIMIKV{Wo2OF z_0K8#J&L|V!N(PBQ?OA%n}TMJe6nGR;+)daB?ZSFP%~+h4}pUET%Tr%nvVSXit5S}sfa#>|g!n(0ULgZiLOzYM|i=X6B1sKS0UR4-K>-C^gdmf;-t5HhR-PRcCy z;_O?)Q}9&CynEwDt|d+Q;AWbZ{@-4S0@m~2uS9lN@q!SWe?`lNdm2jbU$>6+7608>Ox885+t|>|Q*3Q* zY3;_QhE?~jzIRn^f#+u1tr!|?wn=JC4eAGfBcp)lnZ+-PkW1h>27{t( zKGcCXf!9Y7_UJ8NI6lQ`F~g3Z7B8rO;e<0clsFcV-UCJ_-z_=u(ki=lFaEB7?-Y7dQf{0v|dPg9EKa+gt~jVZ2l7 zQE?4;s~Meww*lKg+!@EpY(xS2D&R5DW8nLN&9e|0@Em^+;sZJg{7m7!Koc&5I_PCo zc)aIG1ZZhD8skwX-!uEb^ZSNhD)pEFM}BkkgXhR^4bF4qnV<7Ag14b9e+A{@ozuJ! z@3M;hVGFOS=63Gt-nDO6&o0ld!Ck|R=B|pany$L8#;&HW)~>OxD_w@&#@+3^ aJ9l^QHt(T(D)!XusoT@Izr^;2>VE+!=Q;cU delta 8273 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