From bbe759f19e3e3f73c3b384c91315ed5e3b6b3e2f Mon Sep 17 00:00:00 2001 From: NoobishSVK Date: Tue, 16 Jan 2024 22:11:35 +0100 Subject: [PATCH] file structure update --- .gitignore | 2 + example.js | 225 +++++++++++++++++++++++++++++++++++++++++++++++ librdsparser.dll | Bin 0 -> 71624 bytes librdsparser.so | Bin 0 -> 26976 bytes 4 files changed, 227 insertions(+) create mode 100644 .gitignore create mode 100644 example.js create mode 100644 librdsparser.dll create mode 100644 librdsparser.so diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e14046 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +example.js \ No newline at end of file diff --git a/example.js b/example.js new file mode 100644 index 0000000..8336ffe --- /dev/null +++ b/example.js @@ -0,0 +1,225 @@ +const koffi = require('koffi'); +const path = require('path'); +const os = require('os'); +const win32 = (os.platform() == "win32") +const unicode_type = (win32 ? 'int16_t' : 'int32_t') +const lib = koffi.load(path.join(__dirname, "librdsparser." + (win32 ? "dll" : "so"))); + +koffi.proto('void callback_pi(void *rds, void *user_data)'); +koffi.proto('void callback_pty(void *rds, void *user_data)'); +koffi.proto('void callback_tp(void *rds, void *user_data)'); +koffi.proto('void callback_ta(void *rds, void *user_data)'); +koffi.proto('void callback_ms(void *rds, void *user_data)'); +koffi.proto('void callback_ecc(void *rds, void *user_data)'); +koffi.proto('void callback_af(void *rds, uint32_t af, void *user_data)'); +koffi.proto('void callback_ps(void *rds, void *user_data)'); +koffi.proto('void callback_rt(void *rds, int flag, void *user_data)'); +koffi.proto('void callback_ptyn(void *rds, void *user_data)'); + +const rdsparser = { + new: lib.func('void* rdsparser_new()'), + free: lib.func('void rdsparser_free(void *rds)'), + parse_string: lib.func('bool rdsparser_parse_string(void *rds, const char *input)'), + get_pi: lib.func('int32_t rdsparser_get_pi(void *rds)'), + get_pty: lib.func('int8_t rdsparser_get_pty(void *rds)'), + get_tp: lib.func('int8_t rdsparser_get_tp(void *rds)'), + get_ta: lib.func('int8_t rdsparser_get_ta(void *rds)'), + get_ms: lib.func('int8_t rdsparser_get_ms(void *rds)'), + get_ecc: lib.func('int8_t rdsparser_get_ecc(void *rds)'), + get_ps: lib.func('void* rdsparser_get_ps(void *rds)'), + get_rt: lib.func('void* rdsparser_get_rt(void *rds, int flag)'), + get_ptyn: lib.func('void* rdsparser_get_ptyn(void *rds)'), + register_pi: lib.func('void rdsparser_register_pi(void *rds, callback_pi *cb)'), + register_pty: lib.func('void rdsparser_register_pty(void *rds, callback_pty *cb)'), + register_tp: lib.func('void rdsparser_register_tp(void *rds, callback_tp *cb)'), + register_ta: lib.func('void rdsparser_register_ta(void *rds, callback_ta *cb)'), + register_ms: lib.func('void rdsparser_register_ms(void *rds, callback_ms *cb)'), + register_ecc: lib.func('void rdsparser_register_ecc(void *rds, callback_ecc *cb)'), + register_af: lib.func('void rdsparser_register_af(void *rds, callback_af *cb)'), + register_ps: lib.func('void rdsparser_register_ps(void *rds, callback_ps *cb)'), + register_rt: lib.func('void rdsparser_register_rt(void *rds, callback_rt *cb)'), + register_ptyn: lib.func('void rdsparser_register_ptyn(void *rds, callback_ptyn *cb)'), + string_get_content: lib.func(unicode_type + '* rdsparser_string_get_content(void *string)'), + string_get_length: lib.func('uint8_t rdsparser_string_get_length(void *string)') +} + +const decode_unicode = function(string) +{ + let content = rdsparser.string_get_content(string); + let length = rdsparser.string_get_length(string); + let array = koffi.decode(content, koffi.array(unicode_type, length)); + return Buffer.from(array, 'utf-8').toString(); +}; + +const callbacks = +{ + pi: koffi.register(rds => ( + value = rdsparser.get_pi(rds), + console.log('PI: ' + value.toString(16).toUpperCase()) + ), 'callback_pi *'), + + pty: koffi.register(rds => ( + value = rdsparser.get_pty(rds), + console.log('PTY: ' + value) + ), 'callback_pty *'), + + tp: koffi.register(rds => ( + value = rdsparser.get_tp(rds), + console.log('TP: ' + value) + ), 'callback_tp *'), + + ta: koffi.register(rds => ( + value = rdsparser.get_ta(rds), + console.log('TA: ' + value) + ), 'callback_ta *'), + + ms: koffi.register(rds => ( + value = rdsparser.get_ms(rds), + console.log('MS: ' + value) + ), 'callback_ms *'), + + af: koffi.register((rds, value) => ( + console.log('AF: ' + value) + ), 'callback_af *'), + + ecc: koffi.register(rds => ( + value = rdsparser.get_ecc(rds), + console.log('ECC: ' + value.toString(16).toUpperCase()) + ), 'callback_ecc *'), + + ps: koffi.register(rds => ( + value = decode_unicode(rdsparser.get_ps(rds)), + console.log('PS: ' + value) + ), 'callback_ps *'), + + rt: koffi.register((rds, flag) => ( + value = decode_unicode(rdsparser.get_rt(rds, flag)), + console.log('RT' + flag + ': ' + value) + ), 'callback_rt *'), + + ptyn: koffi.register((rds, flag) => ( + value = decode_unicode(rdsparser.get_ptyn(rds)), + console.log('PTYN: ' + value) + ), 'callback_ptyn *') +} + +let rds = rdsparser.new() +rdsparser.register_pi(rds, callbacks.pi) +rdsparser.register_pty(rds, callbacks.pty) +rdsparser.register_tp(rds, callbacks.tp) +rdsparser.register_ta(rds, callbacks.ta) +rdsparser.register_ms(rds, callbacks.ms) +rdsparser.register_ecc(rds, callbacks.ecc) +rdsparser.register_af(rds, callbacks.af) +rdsparser.register_ps(rds, callbacks.ps) +rdsparser.register_rt(rds, callbacks.rt) +rdsparser.register_ptyn(rds, callbacks.ptyn) + +let data = [ + "34DB054A76CD445000", + "34DB25504A757A2000", + "34DB054FE4A42A2000", + "34DB355800004BD700", + "34DB054CA829202A00", + "34DBC5400000000000", + "34DB054976CD4B5200", + "34DB25517A61206300", + "34DB054AE4A4445000", + "34DB25526877696C00", + "34DB054FA8292A2000", + "34DB2553653A204200", + "34DB054C76CD202A00", + "34DB255475646B6100", + "34DB0549E4A44B5200", + "34DB25552053756600", + "34DB054AA829445000", + "34DB25566C65726100", + "34DB054F76CD2A2000", + "34DB2557202D204300", + "34DB054CE4A4202A00", + "34DB25587A61732000", + "34DB0549A8294B5200", + "34DB25594F5F4F7700", + "34DB054A76CD445000", + "34DB255A69750D0D00", + "34DB054FE4A42A2000", + "34DB25405465726100", + "34DB054CA829202A00", + "34DB355800004BD700", + "34DB054976CD4B5200", + "34DBC558301821AF00", + "34DB054AE4A4445000", + "34DB25417A20677200", + "34DB054FA8292A2000", + "34DB2542616D793A00", + "34DB054C76CD202A00", + "34DB254320476F6C00", + "34DB0549E4A44B5200", + "34DB25446563205500", + "34DB054AA829445000", + "34DB25456F726B6900", + "34DB054F76CD2A2000", + "34DB25466573747200", + "34DB054CE4A4202A00", + "34DB254761202D2000", + "34DB0549A8294B5200", + "34DB25484E69652000", + "34DB054A76CD445000", + "34DB25494761732000", + "34DB054FE4A42A2000", + "34DB254A4475636800", + "34DB054CA829202A00", + "34DB254B61200D0D00", + "34DB054976CD4B5200", + "34DB25405465726100", + "34DB054AE4A4445000", + "34DB355800004BD700", + "34DB054FA8292A2000", + "34DBC548301821AF00", + "34DB054C76CD202A00", + "34DB25417A20677200", + "34DB0549E4A44B5200", + "34DB2542616D793A00", + "34DB054AA829445000", + "34DB254320476F6C00", + "34DB054F76CD2A2000", + "34DB25446563205500", + "34DB054CE4A4202A00", + "34DB25456F726B6900", + "34DB0549A8294B5200", + "34DB25466573747200", + "34DB054A76CD445000", + "34DB254761202D2000", + "34DB054FE4A42A2000", + "34DB25484E69652000", + "34DB054CA829202A00", + "34DB25494761732000", + "34DB054976CD4B5200", + "34DB254A4475636800", + "34DB054AE4A4445000", + "34DB254B61200D0D00", + "34DB054FA8292A2000", + "34DB25405465726100", + "34DB054C76CD202A00", + "34DB355800004BD700", + "34DB0549E4A44B5200", + "34DBC548301821AF00", + "34DB054AA829445000", + "34DB25417A20677200", + "34DB054F76CD2A2000", + "34DB2542616D793A00", + "34DBA5505241444900", + "34DBA5514F20372000" +] + +for (let group of data) +{ + rdsparser.parse_string(rds, group); +} + +for (let cb in callbacks) +{ + koffi.unregister(callbacks[cb]); +} + +rdsparser.free(rds); diff --git a/librdsparser.dll b/librdsparser.dll new file mode 100644 index 0000000000000000000000000000000000000000..733a25c7cb61037ad55560c17c2af87ced223605 GIT binary patch literal 71624 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 literal 0 HcmV?d00001 diff --git a/librdsparser.so b/librdsparser.so new file mode 100644 index 0000000000000000000000000000000000000000..48087869e1c4905f2fcbf6d85e9636d441355d97 GIT binary patch literal 26976 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 literal 0 HcmV?d00001