diff --git a/CMakeLists.txt b/CMakeLists.txt index 5894f68..ec93aff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,13 +22,53 @@ AUX_SOURCE_DIRECTORY(escape_unescape DIR_SRC_ESCAPE_UNESCAPE) AUX_SOURCE_DIRECTORY(net_utils DIR_SRC_NET_UTILS) AUX_SOURCE_DIRECTORY(debug_print DIR_SRC_DEBUG_PRINT) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) SET(MQTT_SRC_PATH ${CMAKE_CURRENT_LIST_DIR}/mqtt) +IF (PAHO_WITH_SSL) + SET(OPENSSL_SEARCH_PATH "/home/hyx/work/openssl/output" CACHE PATH "Directory containing OpenSSL libraries and includes") + + IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + SET(OPENSSL_SEARCH_PATH "/usr/local/opt/openssl") + ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + + IF (WIN32) + SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win64") + SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib64") + IF (DEFINED ENV{PAHO_WINDOWS_BUILD_BIT}) + IF ($ENV{PAHO_WINDOWS_BUILD_BIT} STREQUAL "x86") + SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win32") + SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib32") + ENDIF () + ENDIF () + ELSE() + SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib") + ENDIF () + + FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h + HINTS ${OPENSSL_SEARCH_PATH}/include) + FIND_LIBRARY(OPENSSL_LIB NAMES ssl libssl ssleay32 + HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_LIB_PATH}) + FIND_LIBRARY(OPENSSLCRYPTO_LIB NAMES crypto libcrypto libeay32 + HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_LIB_PATH}) + + MESSAGE(STATUS "OpenSSL hints: ${OPENSSL_SEARCH_PATH}") + MESSAGE(STATUS "OpenSSL headers found at ${OPENSSL_INCLUDE_DIR}") + MESSAGE(STATUS "OpenSSL library found at ${OPENSSL_LIB}") + MESSAGE(STATUS "OpenSSL Crypto library found at ${OPENSSLCRYPTO_LIB}") + +# INCLUDE_DIRECTORIES( +# ${OPENSSL_INCLUDE_DIR} +# ) +add_definitions(-DOPENSSL=1) +ENDIF() + INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_LIST_DIR}/ ${CMAKE_BINARY_DIR}/ ${MQTT_SRC_PATH}/ + ${OPENSSL_INCLUDE_DIR}/ ${CMAKE_CURRENT_LIST_DIR}/uart_utils ${CMAKE_CURRENT_LIST_DIR}/uart_can ${CMAKE_CURRENT_LIST_DIR}/queue @@ -92,8 +132,8 @@ SET(SRC_TX_SERVER ${CMAKE_CURRENT_LIST_DIR}/main.c ) -ADD_EXECUTABLE(tx_server ${SRC_TX_SERVER}) +ADD_EXECUTABLE(jd_server ${SRC_TX_SERVER}) -TARGET_LINK_LIBRARIES(tx_server pthread dl) +TARGET_LINK_LIBRARIES(jd_server pthread dl "-L/home/hyx/work/openssl/output/lib" "-lssl" "-lcrypto") diff --git a/cp.sh b/cp.sh index 3e3fc52..2d645eb 100755 --- a/cp.sh +++ b/cp.sh @@ -1,7 +1,10 @@ #sshpass -p "&Over#B0Ost!" scp ./start.sh root@10.10.10.101:/root/ -#sshpass -p "&Over#B0Ost!" scp ./output/bin/tx_server root@10.10.10.101:/root/ -sshpass -p "&Over#B0Ost!" scp ./output/bin/tx_server root@10.10.10.101:/home/linaro/ +#sshpass -p "&Over#B0Ost!" scp ./output/bin/tx_server root@10.10.12.2:/root/ +#sshpass -p "&Over#B0Ost!" scp ./output/bin/tx_server root@10.10.10.101:/home/linaro/ #sshpass -p "PddloTSecPwdOnly!" scp ./output/bin/tx_server root@192.168.0.148:/home/linaro/ -#sshpass -p "PddloTSecPwdOnly!" scp ./output/bin/tx_server root@10.10.10.132:/root/ -#sshpass -p "PddloTSecPwdOnly!" scp ./start.sh root@10.10.10.225:/root/ -#sshpass -p "PddloTSecPwdOnly!" scp ./start.sh root@10.10.10.132:/root/ +#sshpass -p "TxApPwd#2025!" scp ./output/bin/tx_server root@10.10.12.2:/root +#sshpass -p "TxApPwd#2025!" scp ./*.zip root@10.10.12.4:/root/ota +sshpass -p "TxApPwd#2025!" scp output/bin/jd_server root@10.10.12.2:/root +#sshpass -p "TxApPwd#2025!" scp tx_ota/*.bin root@10.10.12.4:/root/ota +#sshpass -p "PddloTSecPwdOnly!" scp ./output/bin/tx_server root@10.10.12.4:/root/ +#sshpass -p "PddloTSecPwdOnly!" scp tx_ota/*.bin root@10.10.12.6:/root/ota diff --git a/d126ei4lj4cc00/ca.crt b/d126ei4lj4cc00/ca.crt new file mode 100755 index 0000000..10e6aaf --- /dev/null +++ b/d126ei4lj4cc00/ca.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYzCCAkugAwIBAgIJAIQKwCvFI20lMA0GCSqGSIb3DQEBDQUAMEcxGTAXBgNV +BAMMEHRoaW5ndGFsay5qZGwuY24xCzAJBgNVBAoMAkpEMRAwDgYDVQQIDAdCZWlq +aW5nMQswCQYDVQQGEwJDTjAgFw0yMTA0MjAwNzUyMzFaGA8yMTIxMDMyNzA3NTIz +MVowRzEZMBcGA1UEAwwQdGhpbmd0YWxrLmpkbC5jbjELMAkGA1UECgwCSkQxEDAO +BgNVBAgMB0JlaWppbmcxCzAJBgNVBAYTAkNOMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAtoSsg0Qdzr/3vVIVNVrL8dHQNzwJvEDIkMapXfZ+KNxgEvwP +G6Ym+XUwykQdM3MjPSVdX/vwWDkOOZKKI5Rn5XHgt3Yufc7aVjmsvLto3mBdStuz +z3rh7PMPkFpW4Ie3zm0PCMbEsa6dT/ApPKElMZI5q4OSPNMmBLw8iDd9FPhi43bQ +74gQHKNbPxpXaCzMgNFxm9nwHsP2muHyKWkX8ATMXa/lPEjnD8+0eAGxlo0VY0h8 +tWeipk1KFHRIdLJMhYOprKxWPqdY/pzqIyYNuOBqriO1/9FmxPXENlyGF/OUyvZt +uu4UwiCvQ9eVlZuN3XCCvZUZFAf92qYGWSC57QIDAQABo1AwTjAdBgNVHQ4EFgQU +hfVGDZhSn0yMTs2ZRXhXLVpTRRwwHwYDVR0jBBgwFoAUhfVGDZhSn0yMTs2ZRXhX +LVpTRRwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOCAQEAsZfBS1fn8vA5 +DU/IzYSSEFMQbp15fgGXrhcw5cgssX4EkxgoJebs1zllNCTmuUuZfZOMVx2BOq7y +Av0pWXFv/8gGUY86ZCHdoXvqykQkLwfhBIRxuWjRycquHZaCtcM3rZtuHPvW1AfT +cTjC3HwXn05ISi5mbz2ibPrXODkaxDEJ8m83hCyXXOdoI0P7r3zSokSDSCgMQYvA +2N+bn+CdoRf46+xBSC2RHm7pssBtRDKTO/iOPeWuk+sKJ4piiZUzctuvxVh7OYno +HH8NmepyB0N9NTBrrpup3pgOFf9ot5B3y2OWH4n8Q7ddQGrmj7SuW1HTW3LIl/HF +tetXyNsX3w== +-----END CERTIFICATE----- diff --git a/d126ei4lj4cc00/d126ei4lj4cc00.crt b/d126ei4lj4cc00/d126ei4lj4cc00.crt new file mode 100755 index 0000000..6051620 --- /dev/null +++ b/d126ei4lj4cc00/d126ei4lj4cc00.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIDDTCCAfWgAwIBAgIHAycFFP4DADANBgkqhkiG9w0BAQsFADBHMRkwFwYDVQQDExB0aGluZ3Rh +bGsuamRsLmNuMQswCQYDVQQKEwJKRDEQMA4GA1UECBMHQmVpamluZzELMAkGA1UEBhMCQ04wIBcN +MjUwNDIzMDgyOTQ2WhgPMjA3NTA0MTEwODI5NDZaMEUxCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdC +ZWlqaW5nMQswCQYDVQQKEwJKRDEXMBUGA1UEAxMOZDEyNmVpNGxqNGNjMDAwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCcr3PanvsNozpBtKtmVv7w4/5DevWxR/XB2cyQO0jnzHsKUAUo +JMsfCRcJWseQpHPGt+E+9S0VzJBEZmc//8aEJevVxGyBVPcWzs+G+bATOeHdPCROngZxePP01mDm +vMhcg3wynlxSunEms3PX2isu8JTALb59srFUUjJnSeUp6ZgQ4Ol2qxy5UOmaQfrkpWZGFuUztXxi +J1PTA4ghyE94dvag7B/9ao5Gknklev9xIDPcpFJnQEhkZgTHvSDpQ9/RqHo/EoitrLdAjThnhOiZ +r5kjbsCf/XJDpds1O5ALaZBYkPlEc+LIbiH2dWFI6EeLqJya3Ht4OjFjL6rHsVQ/AgMBAAEwDQYJ +KoZIhvcNAQELBQADggEBACc92CJ+XLbp9CHor9WWSuc/Medc4DLK2GK/R+PwaO5dFGB615N4UVGd +GpigK5Yf/Cg4JD5r8waDSyxrm1o/3GhB9fwBjEfSLW4FA3Tj6LexOIxkUEqGP7NpHrFE0zfvc/hD +SuoXFnwuaI3uZmw0ArMl9QNEvgcx8Bnd/p35KQjyeRvw7PT0DKuudYFmoIEJLW64FC5/b4/P6LDS +fsTNuABCJyjoC0gbe/r0rmlucpa3K22l8NXO/pcIGPKVBP8URwdB1ibu803hbV5+a4knUy6Qghv6 +uvdL1fLIJo85byUm6wQ4hEqy6cOX4D3DS08STo+mLfsv5c90Wq83niP1fXw= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/d126ei4lj4cc00/d126ei4lj4cc00.key b/d126ei4lj4cc00/d126ei4lj4cc00.key new file mode 100755 index 0000000..874f580 --- /dev/null +++ b/d126ei4lj4cc00/d126ei4lj4cc00.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAnK9z2p77DaM6QbSrZlb+8OP+Q3r1sUf1wdnMkDtI58x7ClAF +KCTLHwkXCVrHkKRzxrfhPvUtFcyQRGZnP//GhCXr1cRsgVT3Fs7PhvmwEznh3Twk +Tp4GcXjz9NZg5rzIXIN8Mp5cUrpxJrNz19orLvCUwC2+fbKxVFIyZ0nlKemYEODp +dqscuVDpmkH65KVmRhblM7V8YidT0wOIIchPeHb2oOwf/WqORpJ5JXr/cSAz3KRS +Z0BIZGYEx70g6UPf0ah6PxKIray3QI04Z4Toma+ZI27An/1yQ6XbNTuQC2mQWJD5 +RHPiyG4h9nVhSOhHi6icmtx7eDoxYy+qx7FUPwIDAQABAoIBAAh4d8Pu6lWfaGva +75U1yMyPFtThFd1CraeQNb3qZpOZe2FgWBcGfjCsViF8VeOc8GFi2XuE164hA/+e +paBRHJNSVYCWAOOxCzahcZizcPBpJavHL5NMeb6yskWfPVfcBtzxgspdw1H5oFpe +Qzn9Im6ENRZ6opy7B1kupGjvFsOANr7SgYU2kijRdP006dqMUGBfYjXRy5iL3MxW +m3kuedL01cO+f5Q//87c2mW41/g5bxDQrCPV5tShoslQi3axqwegWcKIMO4vgT13 +Mry56zZAZ6GVZklot/HynsKBiLHod6stw41oxQfw08EZn+U6aQDOaJUrBs//2zXx +P+6yeSkCgYEAy+U92vt+/F1sRJ/u64tiDit7XjeGg+dT5bT9/QligOC3r/oFhZFp +9ZayswWhIlMRimSo89oyFdG0TWJZ7nf/6nByNVoVJSuekHek34x81bH5L3ooASmY +kgyeKQLz/9m3dKtGfHA9I2UKwxW8dgXVYT+2G4qsuz0xhGpJYAYpsAsCgYEAxLm+ +oh5j4WWH4fxISiGKz1j7JqeAAsmfhqtlS4app3izvD3Soy7VKrmCL0lO3frEgdrY +i6x7wq78CWjCcgJ9Id4dGK7NTjzgKp3P1oNEMdFp1KwFE8xOFwIrs0Vn60ajU45D +IxNXcoeZJoYoxTG14/gHgJaJfkKABqfLyI5YCR0CgYBDWnHJccSr9ux56t8QvhVh +GuoA4JS14+ep/NTeDoiUjCcBobTLP5LiBqr3SkfFP+2OatwI2a4r2P8XhQKyLL/E +IOsJRr2vbq5NiMhU9GKUcNsg3Nh0MdptfG+OmqQhgzj/+EgreSQpGgqpEPgVgK3R +FyvAA1o16+v8kuO0LbT9qwKBgDZnV7zlwqF2vplUd3loxUaKSQprkA81SxSnGaBF +YW2bB7mrLzFJplHmc4Y4M8NXsjhnGTOnQ6KXWcQQYJW+8nQHROyqisR0OVoPwoaE +TruoOihCWjUbbw0V4Jf3PcHnCwv0b8SneKuHrGbm+ydtk+uzj/+Tofp00YsFpGmW +U+pRAoGAeXskUwaWH1vzzIoB03SalKvOYfAeUdd6YtbwVkMTKo5j054NYnLCv/5V +bsEGXiXXELk6pvbybw0Qq93aUWFDtG2yPZyxFkOu2UBmvLsvzX9YV5TK2I608tOk +yuI4udmf85QhO1vrrEKPIRIj3rZFdDzsSf14G19K3GK5lCEMugo= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/d126ei5emgcc00/ca.crt b/d126ei5emgcc00/ca.crt new file mode 100755 index 0000000..10e6aaf --- /dev/null +++ b/d126ei5emgcc00/ca.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYzCCAkugAwIBAgIJAIQKwCvFI20lMA0GCSqGSIb3DQEBDQUAMEcxGTAXBgNV +BAMMEHRoaW5ndGFsay5qZGwuY24xCzAJBgNVBAoMAkpEMRAwDgYDVQQIDAdCZWlq +aW5nMQswCQYDVQQGEwJDTjAgFw0yMTA0MjAwNzUyMzFaGA8yMTIxMDMyNzA3NTIz +MVowRzEZMBcGA1UEAwwQdGhpbmd0YWxrLmpkbC5jbjELMAkGA1UECgwCSkQxEDAO +BgNVBAgMB0JlaWppbmcxCzAJBgNVBAYTAkNOMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAtoSsg0Qdzr/3vVIVNVrL8dHQNzwJvEDIkMapXfZ+KNxgEvwP +G6Ym+XUwykQdM3MjPSVdX/vwWDkOOZKKI5Rn5XHgt3Yufc7aVjmsvLto3mBdStuz +z3rh7PMPkFpW4Ie3zm0PCMbEsa6dT/ApPKElMZI5q4OSPNMmBLw8iDd9FPhi43bQ +74gQHKNbPxpXaCzMgNFxm9nwHsP2muHyKWkX8ATMXa/lPEjnD8+0eAGxlo0VY0h8 +tWeipk1KFHRIdLJMhYOprKxWPqdY/pzqIyYNuOBqriO1/9FmxPXENlyGF/OUyvZt +uu4UwiCvQ9eVlZuN3XCCvZUZFAf92qYGWSC57QIDAQABo1AwTjAdBgNVHQ4EFgQU +hfVGDZhSn0yMTs2ZRXhXLVpTRRwwHwYDVR0jBBgwFoAUhfVGDZhSn0yMTs2ZRXhX +LVpTRRwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOCAQEAsZfBS1fn8vA5 +DU/IzYSSEFMQbp15fgGXrhcw5cgssX4EkxgoJebs1zllNCTmuUuZfZOMVx2BOq7y +Av0pWXFv/8gGUY86ZCHdoXvqykQkLwfhBIRxuWjRycquHZaCtcM3rZtuHPvW1AfT +cTjC3HwXn05ISi5mbz2ibPrXODkaxDEJ8m83hCyXXOdoI0P7r3zSokSDSCgMQYvA +2N+bn+CdoRf46+xBSC2RHm7pssBtRDKTO/iOPeWuk+sKJ4piiZUzctuvxVh7OYno +HH8NmepyB0N9NTBrrpup3pgOFf9ot5B3y2OWH4n8Q7ddQGrmj7SuW1HTW3LIl/HF +tetXyNsX3w== +-----END CERTIFICATE----- diff --git a/d126ei5emgcc00/d126ei5emgcc00.crt b/d126ei5emgcc00/d126ei5emgcc00.crt new file mode 100755 index 0000000..60f5770 --- /dev/null +++ b/d126ei5emgcc00/d126ei5emgcc00.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIDDTCCAfWgAwIBAgIHAycFFRcCADANBgkqhkiG9w0BAQsFADBHMRkwFwYDVQQDExB0aGluZ3Rh +bGsuamRsLmNuMQswCQYDVQQKEwJKRDEQMA4GA1UECBMHQmVpamluZzELMAkGA1UEBhMCQ04wIBcN +MjUwNDIzMDgyOTUyWhgPMjA3NTA0MTEwODI5NTJaMEUxCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdC +ZWlqaW5nMQswCQYDVQQKEwJKRDEXMBUGA1UEAxMOZDEyNmVpNWVtZ2NjMDAwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCwezx2pe348VvFHfKqdV7u078uf15UoXLfRnLMWc+9BXOVRptd +lssWSkgFtvpRfvCfpNBjD+UY1hBl//pOhRCkzpl9GrVrzfWdgp8zjX2XcoxFAjk0JxCFFObfvZFj +C+NR+5mMP9eHtQamaoXcHYYo8+kAzrW8r7ZZbkLjqn+UFHLb9f9cd0L2r0nzwUgErBXGw2HLjnwF +BVNGNSbmVXh6d2qFW1jzIC/mqjrFnbZIeiwTWd4hbM6CDoCHa6Rigl7V2T2LUgXCqt1fVubPG4/a +scRHdq9Uh4VoLcoGzgfMiW30NPxHplx2QjUTCt5VHsIQtD9fdganvzwgtNyioP1DAgMBAAEwDQYJ +KoZIhvcNAQELBQADggEBAG4eKbCKqVQ6Sffp6omXwD7cEU1t5vz5B7LBRU94J8AtGHWDslJwcGyi +5QfaZoArAXp5KOTRXhrLTRTEsUeyys2uAOZ0Z/LlUJ1Tsc8150QfM50IvlSiefoSC9+nrhjmEO+r +SuIeshvVmVK3BYHipMoKzyEbSkFFQ71d0ShiwhaOQLNrM+hi71yZ/yCQvllsd7HHrd7iocV+uJYJ +IAeMTqew/+jlHk+lZWB1egkU7q4uYBEDrtbu5hlPNDg6fIeBuuw1she2yjBkOYj2H+Vucx1UNrdf +UxjNBRqg6jpWNfOrMGkTBHAIbFOH8hEZQdhvo9za++IzQfSNkrM8moiJkZE= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/d126ei5emgcc00/d126ei5emgcc00.key b/d126ei5emgcc00/d126ei5emgcc00.key new file mode 100755 index 0000000..76e821f --- /dev/null +++ b/d126ei5emgcc00/d126ei5emgcc00.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAsHs8dqXt+PFbxR3yqnVe7tO/Ln9eVKFy30ZyzFnPvQVzlUab +XZbLFkpIBbb6UX7wn6TQYw/lGNYQZf/6ToUQpM6ZfRq1a831nYKfM419l3KMRQI5 +NCcQhRTm372RYwvjUfuZjD/Xh7UGpmqF3B2GKPPpAM61vK+2WW5C46p/lBRy2/X/ +XHdC9q9J88FIBKwVxsNhy458BQVTRjUm5lV4endqhVtY8yAv5qo6xZ22SHosE1ne +IWzOgg6Ah2ukYoJe1dk9i1IFwqrdX1bmzxuP2rHER3avVIeFaC3KBs4HzIlt9DT8 +R6ZcdkI1EwreVR7CELQ/X3YGp788ILTcoqD9QwIDAQABAoIBABHvNCHKkvhtbqoF +dRelfdQ/aHpNL0Tic04FVr01k0reNvTAjCFipZjKS69o/N8zSziuAw9OGjX/6wKy +lLlOBHb7F9YC1NTzxTYQhCU1B8JQPbj1lOKb5a3gheXO2et61csLCnuaMUj1OIvI +33mS9oNK5i7S0t0t7hYAgoOoW/asQa5N0mTqH8uVGeq7eiHluk01q7VFnE0G6aYX +E8Zr68B1ihgRT8Iv2eW39apG2uqtBX/G048VTRWI1EOvVS/VM0vAbuN9mcvKOLtf +cMCCMUptbtSCFe8nvR8YZon1yrj53nOt2WVjTPn2G626VoBVn//UR7QvJMVHYD9p +3/zZnaECgYEA9L14pWghJjzBBwlsjqD074laaUVmc9MfZSfoqrniJdgfi2oGJ72D +zd+jq0XUAKOELfxG2KNCdmWg7QAbyA+5StjCAi6e9DogXV5LdS8XRPcQ/pEEyvZQ +JhfquPW+SJaLLAtKcKTbbtNJUVvg5B5nK7PUDHiJkTYsJUMbo4/0hO0CgYEAuJnR +vEBsr82TpI4tyo6eO85moRQslYwHMR3PQf9CMRnp/kHLSCNUROhbdNBVu7xVd4Zh +J2YlkkZUSqEod1bYVUwhbpCmQemPF7KfqF0FTLXbw/Jfp73JbYDxg60b3gJPJ2eZ +A7812Zmg4RukM+wkR0cIMVi+6TQ4n5lnbgNj9O8CgYEAnxHXLIr1oMi0HUK+0CVF +jbsUjH+TC40ZRsIds3mFx1slhZOv1HyVAmZtFpEYLiIZc1oZIg1a0WFUqzX62Jl/ +sWoZDxoGLm7pQkZbfRrSYPzEivDu0Iwvo9K/uN/ggYV3h3T/OR+tj+a8LKkvDpXE +MN98324o27z+DGoFuNWD9DECgYAhYwiQ4KIHpcm3MFPN1798l5buOSTbI0lFs9uB +VzZUhRhR+PpYILOkBtZLqUZoPubCSFaX9pyC+R9TpBQaiWV0/+DoC1dWgnRz18WS +gMhtmFKX/OUaBHRCzthfdVad75L7UHxXNiT6JxP2wrYPAf2Juqobqq5UpTI8g1U2 +i3xvlwKBgQDAb7zFOAc8eMOCVvNTJwaft73gF3y54AN5YOjc/L8W0jNE6bJBv1cY +SiV6RTj+CIAeXiwGfaM6dZH0MtRZMm3wAX28Ze2Uc2aiFS2kd2FRRjyMMPTA+dar +GDRx/hBOwX+s8ID6/wXTgCjB6TB4eXnlSdkM5zab96DKa4Myu2052w== +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/jd_ota/F8_20250517_V1.0.31_1838_W02CL0BSL_0x21.bin b/jd_ota/F8_20250517_V1.0.31_1838_W02CL0BSL_0x21.bin new file mode 100755 index 0000000..a896a6a Binary files /dev/null and b/jd_ota/F8_20250517_V1.0.31_1838_W02CL0BSL_0x21.bin differ diff --git a/jd_ota/jd_server b/jd_ota/jd_server new file mode 100755 index 0000000..db04dda Binary files /dev/null and b/jd_ota/jd_server differ diff --git a/jd_ota/start.sh b/jd_ota/start.sh new file mode 100755 index 0000000..5ab8c12 --- /dev/null +++ b/jd_ota/start.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +cd /root +filename=/root/ota/jd_server +filesize=`ls -l $filename | awk '{ print $5 }'` +maxsize=$((440000)) +if [ $filesize -gt $maxsize ] +then + echo "$filesize > $maxsize copy" + cp $filename . + chmod 777 jd_server + ./jd_server +else + echo "$filesize < $maxsize not copy" + ./jd_server +fi diff --git a/libcrypto.so.3 b/libcrypto.so.3 new file mode 100755 index 0000000..eba78be Binary files /dev/null and b/libcrypto.so.3 differ diff --git a/libssl.so.3 b/libssl.so.3 new file mode 100755 index 0000000..70f0320 Binary files /dev/null and b/libssl.so.3 differ diff --git a/main.c b/main.c index 529c3a2..343b7b1 100644 --- a/main.c +++ b/main.c @@ -10,11 +10,12 @@ pthread_t pt_uart_recv_data; pthread_t pt_uart_recv_back; pthread_t pt_mqtt_recv; pthread_t pt_readqr; +pthread_t pt_reporttag; pthread_t pt_mqtt; pthread_t pt_removelog; pthread_t pt_watchdog; -pthread_t pt_tagsearch; pthread_t pt_removeduplicatetag; +pthread_t pt_keycheck; uart_utils_t uartSend = {0}; uart_utils_t uartRecvData = {0}; uart_utils_t uartRecvBack = {0}; @@ -24,20 +25,26 @@ struct input_event buff; bool newappDownloaded=false; bool isLightOn=false; -bool isLightOnByRule=false; -bool isLabelUp=false; -bool isSearchLabel=false; -bool isSearchLabelOn=false; -bool isLightEnable=true; +bool isLightOnById=false; +bool isLightOnByGroup=false; +bool isBindTag=false; bool isSendComEnd=true; +bool isStopBroadcast=false; +bool isStopBroadcastBegin=false; +bool isOtaEnable=false; jt_only_tag_t onlyTags[200]={0}; int tagCount=0; +int lightbars_size=0; +int lightbars_count=0; +uint8_t changecolor=0; +uint8_t changesound=0; +uint8_t groupno=0; int fd; int UPCASE=0; int count_value=0; -int getPayloadTime=120*1000;//usecond -char softwareVersion[16]="1.1.9"; -char stationsn[16]="TJ251372224247";//TJ250995217957 +int getPayloadTime=100*1000;//usecond +char softwareVersion[16]="2.1.2"; +char stationsn[16]="d126ei4lj4cc00";//TJ250995217957 char productid[8]="10045"; char appKey[32]="fdhQmhqhvbL1cf1K9mUqt"; char appSecret[64]="s3izIliw0CF48Pcsi16rjOmoFRf5WEt8"; @@ -45,19 +52,41 @@ char mqttRawPassword[64]=""; char input_value[1024]={0};//94b4e39caf1d45ee9a071d701cc037b4 char input_value_copy[1024]={0}; char *getDevRegisterStatusUrl="https://gaea-zt-express.com/device/modifyRegisterInfo"; -char *logUploadUrl="http://pda.pupumall.net:1180/open/api/device/log/upload"; +char *updateUrl="https://idata-creat.oss-cn-shenzhen.aliyuncs.com/jd_ota.zip"; char *getDevRawPasswordUrl="https://gaea.zt-express.com/device/modifyRegisterInfo"; -char *hostDomain="tx-mqtt.zt-express.com"; -char lightsn1[9]={0}; -char lightsn2[9]={0}; -char lightsn3[9]={0}; -char lightsn4[9]={0}; -char lightsn5[9]={0}; -int searchTimeOut=0; -int searchTimeOld=0; -int searchTimeNew=0; +char *hostDomain="emqx.thingtalk.jdl.com"; +char lightsn1[7]={0}; +char lightsn2[7]={0}; +char lightsn3[7]={0}; +char lightsn4[7]={0}; +char lightsn5[7]={0}; +char lightsn6[7]={0}; +char lightsn7[7]={0}; +char lightsn8[7]={0}; +char lightsn9[7]={0}; +char lightsn10[7]={0}; +char lightsn11[7]={0}; +char lightsn12[7]={0}; +char lightsn13[7]={0}; +char lightsn14[7]={0}; +char lightsn15[7]={0}; +char lightsn16[7]={0}; +char lightsn17[7]={0}; +char lightsn18[7]={0}; +char lightsn19[7]={0}; +char lightsn20[7]={0}; +char lightsn21[7]={0}; +char lightsn22[7]={0}; +char lightsn23[7]={0}; +char lightsn24[7]={0}; +char lightsn25[7]={0}; +char lightsn26[7]={0}; +char lightsn27[7]={0}; +char lightsn28[7]={0}; +char lightsn29[7]={0}; +char lightsn30[7]={0}; int lightsnNum=0; -int mqtt_port=1883; +int mqtt_port=2000; /*================================================================================*/ void doCommand_help(int argc, char *argv[]) { @@ -89,12 +118,12 @@ void do_removelog(void) fgets(buffer,sizeof(buffer),fp); logcount=atoi(buffer); LOG_I("logcount:%d\n",logcount); - if(logcount>=15){ - sprintf(syscmd,"ls Log.*|head -%d|xargs rm -fr",logcount-7); + if(logcount>=3){ + sprintf(syscmd,"ls Log.*|head -%d|xargs rm -fr",logcount-2); LOG_I("%s\n",syscmd); system(syscmd); }else{ - LOG_I("logcount less than 15,not remove\n"); + LOG_I("logcount less than 3,not remove\n"); } } @@ -115,22 +144,20 @@ void removeLog(){ } saved=atol(savedtime); LOG_I("now=%ld,saved=%ld,nowtime=%s,savedtime=%s\n",now,saved,nowtime,savedtime); - if(now-saved>=(60*60*24*30)){ + if(now-saved>=(60*60*24*5)){ //if(now-saved>=10){ buffer_to_file("logTime",nowtime,strlen(nowtime),"wb"); do_removelog(); } - sleep(60*60*10); + sleep(60*60*1); } } void enableWatchDog(){ system("echo 1 > /sys/class/gpio/export");//watchdog enable pin SGM820 - system("echo 112 > /sys/class/gpio/export");//feed watchdog pin 113 yellow - system("echo 113 > /sys/class/gpio/export");//feed watchdog pin 113 yellow + system("echo 112 > /sys/class/gpio/export");//feed watchdog pin red system("echo out > /sys/class/gpio/gpio1/direction"); system("echo out > /sys/class/gpio/gpio112/direction"); - system("echo out > /sys/class/gpio/gpio113/direction"); system("echo 1 > /sys/class/gpio/gpio1/value"); LOG_I("enable watchdog\n"); system("echo 1 > /sys/class/gpio/gpio112/value"); @@ -146,23 +173,12 @@ void feedWatchDog(){ } } -void rebootSystem(void){ - while(!newappDownloaded){ - if(!newappDownloaded){ - struct tm *result; - time_t timep; - time (&timep); - result = localtime(&timep); - //printf("%d:%d:%d\n",result->tm_hour, result->tm_min, result->tm_sec); - if(result->tm_hour==0 && result->tm_min==0 && result->tm_sec==10){ - newappDownloaded=true; - LOG_I("prepare to reboot\n"); - } - } - sleep(1); +void report_tag(void){ + while(1){ + sleep(60*11); + LOG_I("report_tag\n"); + light_status_report(); } - - system("reboot"); } int readQrcode() @@ -631,7 +647,7 @@ int readQrcode() error: return 1; } - +#if 0 void writeWpa(char *filename,char *ssid,char *psw){ LOG_I("%s\n",__func__); buffer_to_file(filename,"# WPA-PSK/TKIP\n",strlen("# WPA-PSK/TKIP\n"),"wb"); @@ -676,11 +692,71 @@ void removeFile(char *filename){ //LOG_I("%s\n",cmd); system(cmd); } +#endif + +void writeNetworkInterface(char *filename,char *dest){ + buffer_to_file(filename,"# interfaces(5) file used by ifup(8) and ifdown(8)", + strlen("# interfaces(5) file used by ifup(8) and ifdown(8)"),"wb"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"# Include files from /etc/network/interfaces.d:",strlen("# Include files from /etc/network/interfaces.d:"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"source-directory /etc/network/interfaces.d",strlen("source-directory /etc/network/interfaces.d"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"auto lo",strlen("auto lo"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"iface lo inet loopback",strlen("iface lo inet loopback"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"auto eth0",strlen("auto eth0"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"iface eth0 inet dhcp",strlen("iface eth0 inet dhcp"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"# address 10.10.12.12",strlen("# address 10.10.12.12"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"# netmask 255.255.255.0",strlen("# netmask 255.255.255.0"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"# gateway 10.10.12.1",strlen("# gateway 10.10.12.1"),"a"); + buffer_to_file(filename,"\n",strlen("\n"),"a"); + buffer_to_file(filename,"hwaddress ether ",strlen("hwaddress ether "),"a"); + buffer_to_file(filename,dest,strlen(dest),"a"); + system("sync"); +} + +char* insert_colon(const char* src, int interval) { + if (!src || interval <= 0) return NULL; + + size_t len = strlen(src); + if (len == 0) { // 空字符串返回空 + char* res = malloc(1); + if (res) res[0] = '\0'; + return res; + } + + // 计算新字符串长度 + size_t sections = (len + interval - 1) / interval; // 总段数 + size_t new_len = len + (sections - 1); // 新长度 = 原长 + 冒号数 + char* new_str = malloc(new_len + 1); // 分配内存:ml-citation{ref="2" data="citationList"} + if (!new_str) return NULL; + + size_t src_idx = 0, dst_idx = 0; + while (src_idx < len) { + // 计算本次复制的字符数 + size_t copy_size = (len - src_idx < (size_t)interval) ? (len - src_idx) : (size_t)interval; + memcpy(new_str + dst_idx, src + src_idx, copy_size); // 块复制:ml-citation{ref="3" data="citationList"} + src_idx += copy_size; + dst_idx += copy_size; + + // 非末尾段时插入冒号 + if (src_idx < len) new_str[dst_idx++] = ':'; + } + new_str[dst_idx] = '\0'; // 终止符:ml-citation{ref="7" data="citationList"} + return new_str; +} void *actHandleQrcode(void *parm){ char *str=(char *)parm; LOG_I("scan:%s\n",str); if(strstr(str,"{")!=NULL){ +#if 0 char deviceSecret[64]={0}; char deviceCode[64]={0}; char netWorkType[64]={0}; @@ -720,10 +796,33 @@ void *actHandleQrcode(void *parm){ sleep(1); system("reboot"); } +#endif }else{ - if(strstr(str,"TJ")!=NULL && strlen(str)==14){ +#if 1 + if(strstr(str,"d")!=NULL && strlen(str)>=27){ + LOG_I("ok\n"); + char *result=NULL; + char *p; + result=strtok_r(str,":",&p); + while(result!=NULL){ + if(strstr(result,"d")!=NULL){ + LOG_I("save sn:%s\n",result); + buffer_to_file("savedDevSn",result,strlen(result),"wb"); + }else{ + //LOG_I("save mac:%s\n",result); + //buffer_to_file("savedDevMac",result,strlen(result),"wb"); + char* destmac = insert_colon(result, 2); + LOG_I("save mac:%s\n",destmac); + writeNetworkInterface("/etc/network/interfaces",destmac); + } + result=strtok_r(NULL,",",&p); + } + } +#else + if(strstr(str,"d1")!=NULL){ buffer_to_file("savedDevSn",str,strlen(str),"wb"); } +#endif } pthread_exit(NULL); } @@ -834,6 +933,53 @@ void getDevRawPassword(char *devsn){ } } } + +void checkOtaKey(void){ + int len=0; + int keycount=0; + char *readresult=NULL; + while(1){ + if(isOtaEnable){ + //system("echo 0 > /sys/class/gpio/gpio113/value"); + //sleep(1); + //system("echo 1 > /sys/class/gpio/gpio113/value"); + sleep(1); + }else{ + readresult=file_to_buffer("/sys/class/gpio/gpio63/value",&len); + //LOG_I("resetKey:%s\n",readresult); + if(readresult!=NULL){ + if(strcmp(readresult,"0\n")==0){ + keycount++; + if(keycount==3){ + keycount=0; + isOtaEnable=true; + //isLEDOtaSuccess=false; + //isAPOtaSuccess=false; + //isSendComEnd=true; + LOG_I("OTA enable\n"); + update_app(); + } + } + } + usleep(100*1000); + } + } +} + +void update_app(void){ + system("rm -fr ota"); + system("mkdir ota"); + char otaCmd[256]={0}; + sprintf(otaCmd,"curl -o /root/ota/jd_ota.zip %s",updateUrl); + system(otaCmd); + sleep(15); + system("unzip ota/jd_ota.zip"); + system("mv jd_ota/* ota"); + system("rm -fr jd_ota"); + system("mv ota/start.sh /root"); + sleep(1); + system("reboot"); +} /*================================================================================*/ void mqtt_init(){ int ret=0; @@ -853,11 +999,11 @@ void mqtt_init(){ //MQTTASYNC_TRACE_SEVERE //MQTTASYNC_TRACE_FATAL //mqtt_config.tracelevel=get_trace_level_by_name("MQTTASYNC_TRACE_PROTOCOL"); - gettimeofday(&tv, NULL); - snprintf(clientid,sizeof(clientid),"%s|signmethod=hmacsha1|timestamp=%ld",stationsn,tv.tv_sec*1000+tv.tv_usec); - LOG_I("clientid:%s,mqttRawPassword:%s\n",clientid,mqttRawPassword); + //gettimeofday(&tv, NULL); + snprintf(clientid,sizeof(clientid),"%s",stationsn); + //LOG_I("clientid:%s,mqttRawPassword:%s\n",clientid,mqttRawPassword); - hmacsha1(mqttRawPassword,clientid,password,sizeof(password)); + //hmacsha1(mqttRawPassword,clientid,password,sizeof(password)); mqtt_config.tracelevel=MQTTASYNC_TRACE_PROTOCOL; mqtt_config.retain=0; mqtt_config.port=mqtt_port; @@ -885,11 +1031,11 @@ void mqtt_init(){ mqtt_config.will_qos = 2; mqtt_config.will_retain = 0; /* TLS options */ - mqtt_config.insecure = 0; + mqtt_config.insecure = 1; mqtt_config.capath = NULL; - mqtt_config.cert = NULL; - mqtt_config.cafile = NULL; - mqtt_config.key = NULL; + mqtt_config.cert = "./custom.crt"; + mqtt_config.cafile = "./ca.crt"; + mqtt_config.key = "./custom.key"; mqtt_config.keypass = NULL; mqtt_config.ciphers = NULL; @@ -914,6 +1060,14 @@ error: } /*================================================================================*/ +void *thread_keycheck(void *arg){ + checkOtaKey(); +} + +void *thread_reporttag(void *arg){ + report_tag(); +} + void *thread_mqtt(void *arg){ mqtt_init(); } @@ -930,27 +1084,6 @@ void *thread_readqr(void *arg){ readQrcode(); } -void *thread_tag_search_send(void *arg){ - while(1){ - if(isSearchLabelOn){ - isSearchLabel=true; - uart_data_send_head_search(&uartSend,5); - sleep(10); - searchTimeNew=getCurrentTime(); - LOG_I("searchTimeNew:%d\n",searchTimeNew); - if((searchTimeNew-searchTimeOld)>=searchTimeOut){ - isSearchLabelOn=false; - search_tag_report(); - } - } - } -} - -//char *tag_1="00A04CCE"; -//char *tag_2="00A04C0E"; -//char *tag_3="00A04C0F"; -//char *tag_4="00A04C11"; -//char *tag_5="00A04CD0"; void *thread_uart_recv_ack(void *arg){ uint16_t parm_ack; int ret=0; @@ -959,229 +1092,382 @@ void *thread_uart_recv_ack(void *arg){ if(ret>0){ LOG_I("ack:%x\n",parm_ack); if(parm_ack==0x2323){ + jt_led_or_group_package_t led_ctrl={ + .s.color=changecolor, + .s.sound=changesound, + .s.single=0, + .s.flash=3, + };//0xC1 11000001 flash高位 + jt_led_or_group_package_t group={ + .group=groupno, + };//0xC1 11000001 flash高位 + //jt_led_or_group_package_t stop={ + // .group=0x72, + //};//0xC1 11000001 flash高位 + jt_group_package_t groups[1]={{groupno,led_ctrl}}; + //jt_group_package_t groups_stop[2]={{0x58,stop},{0xE3,0x00}}; +#if 0 + uint32_t tag1=strtol(lightsn1,NULL,16); + uint32_t tag2=strtol(lightsn2,NULL,16); + uint32_t tag3=strtol(lightsn3,NULL,16); + uint32_t tag4=strtol(lightsn4,NULL,16); + uint32_t tag5=strtol(lightsn5,NULL,16); + uint32_t tag6=strtol(lightsn6,NULL,16); + uint32_t tag7=strtol(lightsn7,NULL,16); + uint32_t tag8=strtol(lightsn8,NULL,16); + uint32_t tag9=strtol(lightsn9,NULL,16); + uint32_t tag10=strtol(lightsn10,NULL,16); + uint32_t tag11=strtol(lightsn11,NULL,16); + uint32_t tag12=strtol(lightsn12,NULL,16); + uint32_t tag13=strtol(lightsn13,NULL,16); + uint32_t tag14=strtol(lightsn14,NULL,16); + uint32_t tag15=strtol(lightsn15,NULL,16); + uint32_t tag16=strtol(lightsn16,NULL,16); + uint32_t tag17=strtol(lightsn17,NULL,16); + uint32_t tag18=strtol(lightsn18,NULL,16); + uint32_t tag19=strtol(lightsn19,NULL,16); + uint32_t tag20=strtol(lightsn20,NULL,16); + uint32_t tag21=strtol(lightsn21,NULL,16); + uint32_t tag22=strtol(lightsn22,NULL,16); + uint32_t tag23=strtol(lightsn23,NULL,16); + uint32_t tag24=strtol(lightsn24,NULL,16); + uint32_t tag25=strtol(lightsn25,NULL,16); + uint32_t tag26=strtol(lightsn26,NULL,16); + uint32_t tag27=strtol(lightsn27,NULL,16); + uint32_t tag28=strtol(lightsn28,NULL,16); + uint32_t tag29=strtol(lightsn29,NULL,16); + uint32_t tag30=strtol(lightsn30,NULL,16); +#else + //low power +#if 0 + uint32_t tag1=strtol("000511",NULL,16); + uint32_t tag2=strtol("00051C",NULL,16); + uint32_t tag3=strtol("000E99",NULL,16); + uint32_t tag4=strtol("004137",NULL,16); + uint32_t tag5=strtol("004348",NULL,16); + uint32_t tag6=strtol("004391",NULL,16); + uint32_t tag7=strtol("004DB8",NULL,16); + uint32_t tag8=strtol("005966",NULL,16); + uint32_t tag9=strtol("014BEE",NULL,16); + uint32_t tag10=strtol("014BF0",NULL,16); +#else + uint32_t tag1=strtol("014C17",NULL,16); + uint32_t tag2=strtol("014C04",NULL,16); + uint32_t tag3=strtol("014C06",NULL,16); + uint32_t tag4=strtol("014C02",NULL,16); + uint32_t tag5=strtol("014C11",NULL,16); + uint32_t tag6=strtol(lightsn6,NULL,16); + uint32_t tag7=strtol(lightsn7,NULL,16); + uint32_t tag8=strtol(lightsn8,NULL,16); + uint32_t tag9=strtol(lightsn9,NULL,16); + uint32_t tag10=strtol(lightsn10,NULL,16); + +#endif + uint32_t tag11=strtol(lightsn11,NULL,16); + uint32_t tag12=strtol(lightsn12,NULL,16); + uint32_t tag13=strtol(lightsn13,NULL,16); + uint32_t tag14=strtol(lightsn14,NULL,16); + uint32_t tag15=strtol(lightsn15,NULL,16); + uint32_t tag16=strtol(lightsn16,NULL,16); + uint32_t tag17=strtol(lightsn17,NULL,16); + uint32_t tag18=strtol(lightsn18,NULL,16); + uint32_t tag19=strtol(lightsn19,NULL,16); + uint32_t tag20=strtol(lightsn20,NULL,16); + uint32_t tag21=strtol(lightsn21,NULL,16); + uint32_t tag22=strtol(lightsn22,NULL,16); + uint32_t tag23=strtol(lightsn23,NULL,16); + uint32_t tag24=strtol(lightsn24,NULL,16); + uint32_t tag25=strtol(lightsn25,NULL,16); + uint32_t tag26=strtol(lightsn26,NULL,16); + uint32_t tag27=strtol(lightsn27,NULL,16); + uint32_t tag28=strtol(lightsn28,NULL,16); + uint32_t tag29=strtol(lightsn29,NULL,16); + uint32_t tag30=strtol(lightsn30,NULL,16); + +#endif +#if 0 + if(isStopBroadcast){ + uart_data_send_lighton_by_group(&uartSend,groups_stop,2); + isStopBroadcast=false; + } +#endif if(isLightOn){ - char *flash=mqtt_parm.msg_flash; - char *light=mqtt_parm.msg_lightDuration; - uint32_t tag1=strtol(lightsn1,NULL,16); - uint32_t tag2=strtol(lightsn2,NULL,16); - uint32_t tag3=strtol(lightsn3,NULL,16); - uint32_t tag4=strtol(lightsn4,NULL,16); - uint32_t tag5=strtol(lightsn5,NULL,16); - uint8_t changecolor=0; - //8灭 1红 2黄 3蓝 4绿 5青 6白 7紫 xitu - //0灭 1蓝 2绿 3青 4红 5紫 6黄 7白 yitaile - if(strcmp(mqtt_parm.msg_color,"1")==0){ - changecolor=4; - }else if(strcmp(mqtt_parm.msg_color,"2")==0){ - changecolor=6; - }else if(strcmp(mqtt_parm.msg_color,"3")==0){ - changecolor=1; - }else if(strcmp(mqtt_parm.msg_color,"4")==0){ - changecolor=2; - }else if(strcmp(mqtt_parm.msg_color,"5")==0){ - changecolor=3; - }else if(strcmp(mqtt_parm.msg_color,"6")==0){ - changecolor=7; - }else if(strcmp(mqtt_parm.msg_color,"7")==0){ - changecolor=5; - }else if(strcmp(mqtt_parm.msg_color,"8")==0){ - changecolor=0; - } - - jt_ledctrl_package_t led_ctrl={ - .s.color=changecolor, - .s.sound=atoi(mqtt_parm.msg_sound), - .s.flash=atoi(mqtt_parm.msg_flash), - }; - uart_data_send_lighton(&uartSend,led_ctrl.ch,atoi(flash),atoi(light),tag1,tag2,tag3,tag4,tag5,lightsnNum); + jt_tag_package_t tags[30]={{(tag1>>16)&0xFF,(tag1>>8)&0xFF,(tag1)&0xFF,led_ctrl}, + {(tag2>>16)&0xFF,(tag2>>8)&0xFF,(tag2)&0xFF,led_ctrl}, + {(tag3>>16)&0xFF,(tag3>>8)&0xFF,(tag3)&0xFF,led_ctrl}, + {(tag4>>16)&0xFF,(tag4>>8)&0xFF,(tag4)&0xFF,led_ctrl}, + {(tag5>>16)&0xFF,(tag5>>8)&0xFF,(tag5)&0xFF,led_ctrl}, + {(tag6>>16)&0xFF,(tag6>>8)&0xFF,(tag6)&0xFF,led_ctrl}, + {(tag7>>16)&0xFF,(tag7>>8)&0xFF,(tag7)&0xFF,led_ctrl}, + {(tag8>>16)&0xFF,(tag8>>8)&0xFF,(tag8)&0xFF,led_ctrl}, + {(tag9>>16)&0xFF,(tag9>>8)&0xFF,(tag9)&0xFF,led_ctrl}, + {(tag10>>16)&0xFF,(tag10>>8)&0xFF,(tag10)&0xFF,led_ctrl}, + {(tag11>>16)&0xFF,(tag11>>8)&0xFF,(tag11)&0xFF,led_ctrl}, + {(tag12>>16)&0xFF,(tag12>>8)&0xFF,(tag12)&0xFF,led_ctrl}, + {(tag13>>16)&0xFF,(tag13>>8)&0xFF,(tag13)&0xFF,led_ctrl}, + {(tag14>>16)&0xFF,(tag14>>8)&0xFF,(tag14)&0xFF,led_ctrl}, + {(tag15>>16)&0xFF,(tag15>>8)&0xFF,(tag15)&0xFF,led_ctrl}, + {(tag16>>16)&0xFF,(tag16>>8)&0xFF,(tag16)&0xFF,led_ctrl}, + {(tag17>>16)&0xFF,(tag17>>8)&0xFF,(tag17)&0xFF,led_ctrl}, + {(tag18>>16)&0xFF,(tag18>>8)&0xFF,(tag18)&0xFF,led_ctrl}, + {(tag19>>16)&0xFF,(tag19>>8)&0xFF,(tag19)&0xFF,led_ctrl}, + {(tag20>>16)&0xFF,(tag20>>8)&0xFF,(tag20)&0xFF,led_ctrl}, + {(tag21>>16)&0xFF,(tag21>>8)&0xFF,(tag21)&0xFF,led_ctrl}, + {(tag22>>16)&0xFF,(tag22>>8)&0xFF,(tag22)&0xFF,led_ctrl}, + {(tag23>>16)&0xFF,(tag23>>8)&0xFF,(tag23)&0xFF,led_ctrl}, + {(tag24>>16)&0xFF,(tag24>>8)&0xFF,(tag24)&0xFF,led_ctrl}, + {(tag25>>16)&0xFF,(tag25>>8)&0xFF,(tag25)&0xFF,led_ctrl}, + {(tag26>>16)&0xFF,(tag26>>8)&0xFF,(tag26)&0xFF,led_ctrl}, + {(tag27>>16)&0xFF,(tag27>>8)&0xFF,(tag27)&0xFF,led_ctrl}, + {(tag28>>16)&0xFF,(tag28>>8)&0xFF,(tag28)&0xFF,led_ctrl}, + {(tag29>>16)&0xFF,(tag29>>8)&0xFF,(tag29)&0xFF,led_ctrl}, + {(tag30>>16)&0xFF,(tag30>>8)&0xFF,(tag30)&0xFF,led_ctrl}}; + uart_data_send_lighton_or_group(&uartSend,tags,lightbars_size); isLightOn=false; +#if 0 + isStopBroadcastBegin=false; + while(1){ + usleep(150*1000); + if(isStopBroadcastBegin){ + break; + } + } + uart_data_send_head(&uartSend,'R',5,30/5,1);//stop broadcast by groupno + isStopBroadcast=true; +#endif + } + + if(isBindTag){ + jt_tag_package_t tags[30]={{(tag1>>16)&0xFF,(tag1>>8)&0xFF,(tag1)&0xFF,group}, + {(tag2>>16)&0xFF,(tag2>>8)&0xFF,(tag2)&0xFF,group}, + {(tag3>>16)&0xFF,(tag3>>8)&0xFF,(tag3)&0xFF,group}, + {(tag4>>16)&0xFF,(tag4>>8)&0xFF,(tag4)&0xFF,group}, + {(tag5>>16)&0xFF,(tag5>>8)&0xFF,(tag5)&0xFF,group}, + {(tag6>>16)&0xFF,(tag6>>8)&0xFF,(tag6)&0xFF,group}, + {(tag7>>16)&0xFF,(tag7>>8)&0xFF,(tag7)&0xFF,group}, + {(tag8>>16)&0xFF,(tag8>>8)&0xFF,(tag8)&0xFF,group}, + {(tag9>>16)&0xFF,(tag9>>8)&0xFF,(tag9)&0xFF,group}, + {(tag10>>16)&0xFF,(tag10>>8)&0xFF,(tag10)&0xFF,group}, + {(tag11>>16)&0xFF,(tag11>>8)&0xFF,(tag11)&0xFF,group}, + {(tag12>>16)&0xFF,(tag12>>8)&0xFF,(tag12)&0xFF,group}, + {(tag13>>16)&0xFF,(tag13>>8)&0xFF,(tag13)&0xFF,group}, + {(tag14>>16)&0xFF,(tag14>>8)&0xFF,(tag14)&0xFF,group}, + {(tag15>>16)&0xFF,(tag15>>8)&0xFF,(tag15)&0xFF,group}, + {(tag16>>16)&0xFF,(tag16>>8)&0xFF,(tag16)&0xFF,group}, + {(tag17>>16)&0xFF,(tag17>>8)&0xFF,(tag17)&0xFF,group}, + {(tag18>>16)&0xFF,(tag18>>8)&0xFF,(tag18)&0xFF,group}, + {(tag19>>16)&0xFF,(tag19>>8)&0xFF,(tag19)&0xFF,group}, + {(tag20>>16)&0xFF,(tag20>>8)&0xFF,(tag20)&0xFF,group}, + {(tag21>>16)&0xFF,(tag21>>8)&0xFF,(tag21)&0xFF,group}, + {(tag22>>16)&0xFF,(tag22>>8)&0xFF,(tag22)&0xFF,group}, + {(tag23>>16)&0xFF,(tag23>>8)&0xFF,(tag23)&0xFF,group}, + {(tag24>>16)&0xFF,(tag24>>8)&0xFF,(tag24)&0xFF,group}, + {(tag25>>16)&0xFF,(tag25>>8)&0xFF,(tag25)&0xFF,group}, + {(tag26>>16)&0xFF,(tag26>>8)&0xFF,(tag26)&0xFF,group}, + {(tag27>>16)&0xFF,(tag27>>8)&0xFF,(tag27)&0xFF,group}, + {(tag28>>16)&0xFF,(tag28>>8)&0xFF,(tag28)&0xFF,group}, + {(tag29>>16)&0xFF,(tag29>>8)&0xFF,(tag29)&0xFF,group}, + {(tag30>>16)&0xFF,(tag30>>8)&0xFF,(tag30)&0xFF,group}}; + uart_data_send_lighton_or_group(&uartSend,tags,lightbars_size); + isBindTag=false; } - if(isSearchLabel){ - uart_data_send_search(&uartSend,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); - isSearchLabel=false; + if(isLightOnById){ + uart_data_send_lighton_by_id(&uartSend,0x00,0xFF,0x00000000,0xFFFFFFFF,led_ctrl,0x0000); + isLightOnById=false; } - - if(isLightOnByRule){ - #if 0 - uint16_t label2=strtol("FF01",NULL,16)&0xFFFF; - uint32_t label3=strtol("663855c0",NULL,16); - uint16_t flash_i=strtol("1",NULL,16)&0xFFFF; - uint16_t light_d=strtol("5",NULL,16)&0xFFFF; - jt_ledctrl_package_t led_ctrl={ - .s.color=1, - .s.sound=1, - .s.flash=1, - }; - uart_data_send_light_rule(&uartSend,atoi("03"),label2,label3, - atoi("0"), atoi("0"),atoi("0"), - led_ctrl.ch, - flash_i,light_d); - #else - uint16_t label2=strtol(mqtt_parm.msg_label2,NULL,16)&0xFFFF; - uint32_t label3=strtol(mqtt_parm.msg_label3,NULL,16); - uint16_t flash_i=strtol(mqtt_parm.msg_flashInterval,NULL,16)&0xFFFF; - uint16_t light_d=strtol(mqtt_parm.msg_lightDuration,NULL,16)&0xFFFF; - uint8_t changecolor=0; - //8灭 1红 2黄 3蓝 4绿 5青 6白 7紫 xitu - //0灭 1蓝 2绿 3青 4红 5紫 6黄 7白 yitaile - if(strcmp(mqtt_parm.msg_color,"1")==0){ - changecolor=4; - }else if(strcmp(mqtt_parm.msg_color,"2")==0){ - changecolor=6; - }else if(strcmp(mqtt_parm.msg_color,"3")==0){ - changecolor=1; - }else if(strcmp(mqtt_parm.msg_color,"4")==0){ - changecolor=2; - }else if(strcmp(mqtt_parm.msg_color,"5")==0){ - changecolor=3; - }else if(strcmp(mqtt_parm.msg_color,"6")==0){ - changecolor=7; - }else if(strcmp(mqtt_parm.msg_color,"7")==0){ - changecolor=5; - }else if(strcmp(mqtt_parm.msg_color,"8")==0){ - changecolor=0; - } - jt_ledctrl_package_t led_ctrl={ - .s.color=changecolor, - .s.sound=atoi(mqtt_parm.msg_sound), - .s.flash=atoi(mqtt_parm.msg_flash), - }; - uart_data_send_light_rule(&uartSend,atoi(mqtt_parm.msg_label1),label2,label3, - atoi(mqtt_parm.msg_label1Rule), atoi(mqtt_parm.msg_label2Rule),atoi(mqtt_parm.msg_label3Rule), - led_ctrl.ch, - flash_i,light_d); - #endif - isLightOnByRule=false; - } - if(isLabelUp){ - #if 1 - uint32_t tag=strtol(mqtt_parm.msg_sn,NULL,16); - uint16_t label2=strtol(mqtt_parm.msg_label2,NULL,16)&0xFFFF; - uint32_t label3=strtol(mqtt_parm.msg_label3,NULL,16); - uart_data_send_lable(&uartSend,tag,atoi(mqtt_parm.msg_label1),label2,label3, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 1); - #else - uint32_t tag=strtol("00A04C0F",NULL,16); - uint16_t label2=strtol("FF01",NULL,16)&0xFFFF; - uint32_t label3=strtol("663855c0",NULL,16); - uart_data_send_lable(&uartSend,tag,atoi("03"),label2,label3, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 1); - - #endif - isLabelUp=false; + + if(isLightOnByGroup){ + uart_data_send_lighton_by_group(&uartSend,groups,1); + isLightOnByGroup=false; } }else if(parm_ack==0x4646){ isSendComEnd=true; + }else if(parm_ack==0x5252){ + uart_data_receive_version(&uartSend); + isSendComEnd=true; } + }else{ + isSendComEnd=true; } - sleep(1); + usleep(100*1000); } } void *thread_uart_recv_data(void *arg){ uint16_t parmAck; + uint16_t tagCodeHead; uint32_t tagCode; uint8_t tagSignal; uint8_t totalLen; uint8_t tagFeature; uint8_t count; - uint16_t batteryV; + uint8_t batteryV; uint16_t version; uint8_t ledCtrl; - uint8_t lable1; - uint16_t lable2; - uint32_t lable3; + uint16_t signCode; + uint16_t reserve; + uint32_t lableParm; while(1){ - uart_data_receive_data_back(&uartRecvData,&parmAck,&tagCode,&tagSignal,&totalLen,&tagFeature, - &count,&batteryV,&version,&ledCtrl,&lable1,&lable2,&lable3); - //LOG_I("recv_data:%04x,%08x,%02x,%02x,%02x,%02x,%04x,%04x,%02x,%02x,%04x,%08x\n",parmAck,tagCode,tagSignal,totalLen, - // tagFeature,count,batteryV,version,ledCtrl,lable1,lable2,lable3); + uart_data_receive_data_back(&uartRecvData,&parmAck,&tagCodeHead,&tagCode,&tagSignal,&totalLen,&tagFeature, + &count,&batteryV,&version,&ledCtrl,&signCode,&reserve,&lableParm); + LOG_I("recv_data:%04x,%04x,tag:%08x,%02x,%02x,%02x,%02x,battery:%02x,%04x,%02x,%04x,reserve:%04x,%08x\n", + parmAck,tagCodeHead,tagCode,tagSignal,totalLen,tagFeature,count,batteryV,version,ledCtrl,signCode,reserve,lableParm); + isStopBroadcastBegin=true; //sleep(2); } } void *thread_uart_recv_back(void *arg){ uint16_t parmAck; + uint16_t tagCodeHead; uint32_t tagCode; uint8_t tagSignal; uint8_t totalLen; uint8_t tagFeature; uint8_t count; - uint16_t batteryV; + uint8_t batteryV; uint16_t version; uint8_t ledCtrl; - uint8_t lable1; - uint16_t lable2; - uint32_t lable3; + uint16_t signCode; + uint16_t reserve; + uint32_t lableParm; while(1){ - uart_data_receive_data_back(&uartRecvBack,&parmAck,&tagCode,&tagSignal,&totalLen,&tagFeature, - &count,&batteryV,&version,&ledCtrl,&lable1,&lable2,&lable3); - //LOG_I("recv_back:%04x,%08x,%02x,%02x,%02x,%02x,%04x,%04x,%02x,%02x,%04x,%08x\n",parmAck,tagCode,tagSignal,totalLen, - //tagFeature,count,batteryV,version,ledCtrl,lable1,lable2,lable3); - if(tagFeature==0x83){ - LOG_I("search tag:%08x,battery:%04x\n",tagCode,batteryV); - PutDataIntoQueue(tagCode,batteryV); - }else if(tagFeature==0x82){ - LOG_I("light down tag:%08x,battery:%04x\n",tagCode,batteryV); - light_off_tag_report(tagCode,batteryV); - }else if(tagFeature==0x81){ - LOG_I("key down tag:%08x,battery:%04x\n",tagCode,batteryV); + uart_data_receive_data_back(&uartRecvBack,&parmAck,&tagCodeHead,&tagCode,&tagSignal,&totalLen,&tagFeature, + &count,&batteryV,&version,&ledCtrl,&signCode,&reserve,&lableParm); + //LOG_I("recv_back:%04x,%04x,tag:%08x,%02x,%02x,%02x,%02x,battery:%02x,%04x,%02x,%04x,reserve:%04x,%08x\n", + // parmAck,tagCodeHead,tagCode,tagSignal,totalLen,tagFeature,count,batteryV,version,ledCtrl,signCode,reserve,lableParm); + PutDataIntoQueue(tagCode,batteryV,reserve); + if(tagFeature==0xFF){ + //LOG_I("heart beat\n"); + }else if(tagFeature==0xFD){ + LOG_I("key\n"); + }else if(tagFeature==0xFC){ + LOG_I("broadcast parm\n"); } } } -void light_off_tag_report(uint32_t name,uint16_t batteryv){ - json_object *lights = NULL; - lights=json_object_new_array(); - char tagName[9]={0}; - char battery[5]={0}; - sprintf(tagName,"%08X",name); - sprintf(battery,"%d",batteryv); - json_object *light = json_object_new_object(); - json_object_object_add(light, "sn", json_object_new_string(tagName)); - json_object_object_add(light, "battery", json_object_new_string(battery)); - json_object_array_add(lights,light); +void functions_reply(char *task_id,char *msg_id){ + json_object *functions = NULL; + functions=json_object_new_array(); + json_object *function = json_object_new_object(); + json_object *out = json_object_new_object(); + json_object_object_add(function, "key", json_object_new_string("relay-lightbar.control")); + json_object_object_add(out, "dev-name", json_object_new_string("")); + json_object_object_add(out, "task-id", json_object_new_string(task_id)); + json_object_object_add(out, "code", json_object_new_int(200)); + json_object_object_add(out, "desc", json_object_new_string("success")); + json_object_object_add(out, "ext1", json_object_new_string("")); + json_object_object_add(out, "ext2", json_object_new_string("")); + json_object_object_add(function, "parameters", out); + json_object_array_add(functions,function); + mqtt_server_reply(stationsn,msg_id,functions); +} + +void station_status_report(){ + json_object *events = NULL; char myid[32]={0}; + char local_ip[32] = {0}; + char local_mac[32]={0}; + char time_buffer[16] = ""; + struct timeval tv; myrand(myid,19); - mqtt_server_light_status_report(stationsn,myid,"2",lights); + getLocalIp(local_ip); + getLocalMac(local_mac); + gettimeofday(&tv, NULL); + snprintf(time_buffer,sizeof(time_buffer),"%ld",tv.tv_sec*1000+tv.tv_usec); + + events=json_object_new_array(); + json_object *event = json_object_new_object(); + json_object *parameters = json_object_new_object(); + json_object_object_add(event, "key", json_object_new_string("relay-base.basic-report")); + json_object_object_add(parameters, "dev-name", json_object_new_string("")); + json_object_object_add(parameters, "comp-code", json_object_new_string("idata")); + json_object_object_add(parameters, "mac-addr", json_object_new_string(local_mac)); + json_object_object_add(parameters, "mode", json_object_new_string("")); + json_object_object_add(parameters, "ip", json_object_new_string(local_ip)); + json_object_object_add(parameters, "sys-ver", json_object_new_string(softwareVersion)); + json_object_object_add(parameters, "site", json_object_new_string("")); + json_object_object_add(parameters, "occ-time", json_object_new_string(time_buffer)); + json_object_object_add(parameters, "ext1", json_object_new_string("")); + json_object_object_add(parameters, "ext2", json_object_new_string("")); + json_object_object_add(event, "parameters", parameters); + json_object_array_add(events,event); + mqtt_server_events_report(stationsn,myid,events); } -void search_tag_report(){ - json_object *lights = NULL; - lights=json_object_new_array(); +void light_status_report(){ + LOG_I("%s:tagCount:%d\n",__func__,tagCount); + json_object *events = NULL; + events=json_object_new_array(); + char myid[32]={0}; + char time_buffer[16] = ""; + struct timeval tv; + + myrand(myid,19); + gettimeofday(&tv, NULL); + snprintf(time_buffer,sizeof(time_buffer),"%ld",tv.tv_sec*1000+tv.tv_usec); + for(int i=0;i>8)&&0xFF); + if(strcmp(group,"00")==0 || strcmp(group,"FF")==0){ + status=1; + }else{ + status=2; + } + //if(onlyTags[i].battery<=24){ + // status=3; + //} + + json_object *event = json_object_new_object(); + json_object *parameters = json_object_new_object(); + json_object_object_add(event, "key", json_object_new_string("relay-lightbar.status-report")); + json_object_object_add(parameters, "dev-name", json_object_new_string("")); + json_object_object_add(parameters, "light-id", json_object_new_string(tagName)); + json_object_object_add(parameters, "status", json_object_new_int(status)); + if(onlyTags[i].battery>=30){ + json_object_object_add(parameters, "battery", json_object_new_int(100)); + }else if(onlyTags[i].battery>=29 && onlyTags[i].battery<30){ + json_object_object_add(parameters, "battery", json_object_new_int(90)); + }else if(onlyTags[i].battery>=28 && onlyTags[i].battery<29){ + json_object_object_add(parameters, "battery", json_object_new_int(70)); + }else if(onlyTags[i].battery>=27 && onlyTags[i].battery<28){ + json_object_object_add(parameters, "battery", json_object_new_int(60)); + }else if(onlyTags[i].battery>=26 && onlyTags[i].battery<27){ + json_object_object_add(parameters, "battery", json_object_new_int(50)); + }else if(onlyTags[i].battery>=25 && onlyTags[i].battery<26){ + json_object_object_add(parameters, "battery", json_object_new_int(40)); + }else if(onlyTags[i].battery>=24 && onlyTags[i].battery<25){ + json_object_object_add(parameters, "battery", json_object_new_int(30)); + } + json_object_object_add(parameters, "group-no", json_object_new_string(group)); + json_object_object_add(parameters, "occ-time", json_object_new_string(time_buffer)); + json_object_object_add(parameters, "ext1", json_object_new_string("")); + json_object_object_add(parameters, "ext2", json_object_new_string("")); + json_object_object_add(event, "parameters", parameters); + json_object_array_add(events,event); + } + + if(tagCount>0){ + mqtt_server_events_report(stationsn,myid,events); + tagCount=0; + memset(onlyTags,0,sizeof(onlyTags)); } - LOG_I("tagCount:%d\n",tagCount); - mqtt_server_light_status_report(stationsn,mqtt_parm.msg_messageId,"1",lights); - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - tagCount=0; - memset(onlyTags,0,sizeof(onlyTags)); } -void addOnlyTag(uint32_t tagname,uint16_t battery){ +void addOnlyTag(uint32_t tagname,uint16_t battery,uint16_t reserve){ int i=0; if(tagCount==0){ jt_only_tag_t jt_only_tag = { .name=tagname, .battery=battery, + .reserve=reserve, }; onlyTags[tagCount]=jt_only_tag; tagCount++; @@ -1195,235 +1481,352 @@ void addOnlyTag(uint32_t tagname,uint16_t battery){ jt_only_tag_t jt_only_tag = { .name=tagname, .battery=battery, + .reserve=reserve, }; onlyTags[tagCount]=jt_only_tag; tagCount++; } } + if(tagCount==100){ + light_status_report(); + } } void *thread_remove_duplicate_tag(void *arg){ uint32_t tagname=0; uint16_t battery=0; + uint16_t reserve=0; while(1){ - if(GetDataFromQueue(&tagname,&battery)==0){ + if(GetDataFromQueue(&tagname,&battery,&reserve)==0){ //LOG_I("%08x,%04x\n",tagname,battery); - addOnlyTag(tagname,battery); + addOnlyTag(tagname,battery,reserve); } } } void *thread_mqtt_recv(void *arg){ char payload[1024]={0}; - char msg_body_value[1024] ={0}; - char msg_body[1024] = {0}; - char msg_data_value[1024] = {0}; - char msg_data[1024] = {0}; - char msg_labelconfig_value[1024] = {0}; - char msg_labelconfig[1024] = {0}; - char msg_lightsn_value[128] = {0}; - char msg_lightsn[128] = {0}; + char msg_functions[1024] ={0}; + char msg_functions_value[1024] ={0}; + char msg_in[512] ={0}; + char msg_in_value[512] ={0}; + char msg_lightbars[4] ={0}; while(1){ if(isSendComEnd){ if(GetDataFromMQueue(payload)==0){ - //getPayloadTime=120*1000; - LOG_I("payload:%s\n",payload); - get_string_from_json_string_by_key_unescape(payload,"messageId",mqtt_parm.msg_messageId,sizeof(mqtt_parm.msg_messageId)); - LOG_I("messageId:%s\n",mqtt_parm.msg_messageId); - if(isSearchLabelOn){ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"search busy",0,productid); - }else{ - get_string_from_json_string_by_key_unescape(payload,"deviceId",mqtt_parm.msg_deviceId,sizeof(mqtt_parm.msg_deviceId)); - LOG_I("deviceId:%s\n",mqtt_parm.msg_deviceId); - get_int_from_json_string_by_key(payload,"timestamp",&mqtt_parm.msg_timestamp); - LOG_I("timestamp:%d\n",mqtt_parm.msg_timestamp); - get_string_from_json_string_by_key_unescape(payload, "msg", msg_body_value, sizeof(msg_body_value)); - snprintf(msg_body, sizeof(msg_body), "%s", msg_body_value); - LOG_I("msg_body:%s\n",msg_body); - get_string_from_json_string_by_key_unescape(msg_body, "msgType", mqtt_parm.msg_type, sizeof(mqtt_parm.msg_type)); - LOG_I("msgType:%s\n",mqtt_parm.msg_type); - get_string_from_json_string_by_key_unescape(msg_body, "data", msg_data_value, sizeof(msg_data_value)); - snprintf(msg_data, sizeof(msg_data), "{%s}", msg_data_value); - LOG_I("msg_data:%s\n",msg_data); - if(strcmp(mqtt_parm.msg_type,"1001")==0){ - LOG_I("1001 dev disable\n"); - isLightEnable=false; - buffer_to_file("LightEnable","disable",strlen("disable"),"wb"); - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - }else if(strcmp(mqtt_parm.msg_type,"1002")==0){ - LOG_I("1002 dev enable\n"); - isLightEnable=true; - buffer_to_file("LightEnable","enable",strlen("enable"),"wb"); - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - }else if(strcmp(mqtt_parm.msg_type,"1005")==0){ - LOG_I("1005 dev reboot\n"); - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - system("reboot"); - }else if(strcmp(mqtt_parm.msg_type,"1014")==0){ - LOG_I("1014 update fw\n"); - get_int_from_json_string_by_key(msg_data, "needWifi", &mqtt_parm.msg_needWifi); - LOG_I("needWifi:%d\n",mqtt_parm.msg_needWifi); - get_string_from_json_string_by_key_unescape(msg_data, "zipPath", mqtt_parm.msg_zipPath, sizeof(mqtt_parm.msg_zipPath)); - LOG_I("zipPath:%s\n",mqtt_parm.msg_zipPath); - get_int_from_json_string_by_key(msg_data, "installType", &mqtt_parm.msg_installType); - LOG_I("installType:%d\n",mqtt_parm.msg_installType); - get_int_from_json_string_by_key(msg_data, "immediately", &mqtt_parm.msg_immediately); - LOG_I("immediately:%d\n",mqtt_parm.msg_immediately); - get_int_from_json_string_by_key(msg_data, "installTime", &mqtt_parm.msg_installTime); - LOG_I("installTime:%d\n",mqtt_parm.msg_installTime); - get_string_from_json_string_by_key_unescape(msg_data, "version", mqtt_parm.msg_version, sizeof(mqtt_parm.msg_version)); - LOG_I("version:%s\n",mqtt_parm.msg_version); - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - char otaCmd[256]={0}; - sprintf(otaCmd,"curl -o /home/linaro/tx_server %s",mqtt_parm.msg_zipPath); - //sprintf(otaCmd,"curl -o /root/tx_server https://fscdn.zto.com/cloudm/iot-device-package/7d609af2165b4d14ae318f17659b2fbf.bin"); - system(otaCmd); - sleep(8); - system("reboot"); - }else if(strcmp(mqtt_parm.msg_type,"5003")==0){ - LOG_I("5003 need report station info\n"); - updateStationInfo(mqtt_parm.msg_messageId); - }else if(strcmp(mqtt_parm.msg_type,"5005")==0){ - LOG_I("5005 cloud search light\n"); - isSendComEnd=false; - isLightOn=false; - isLightOnByRule=false; - isLabelUp=false; - isSearchLabel=true; - get_string_from_json_string_by_key_unescape(msg_data, "scene", mqtt_parm.msg_scene, sizeof(mqtt_parm.msg_scene)); - LOG_I("scene:%s\n",mqtt_parm.msg_scene); - get_string_from_json_string_by_key_unescape(msg_data, "timeout", mqtt_parm.msg_timeout, sizeof(mqtt_parm.msg_timeout)); - LOG_I("timeout:%s\n",mqtt_parm.msg_timeout); - searchTimeOut=atoi(mqtt_parm.msg_timeout); - LOG_I("searchTimeOut:%d\n",searchTimeOut); - searchTimeOld=getCurrentTime(); - LOG_I("searchTimeOld:%d\n",searchTimeOld); - isSearchLabelOn=true; - }else if(strcmp(mqtt_parm.msg_type,"3015")==0){ - LOG_I("3015 light on\n"); - get_string_from_json_string_by_key_unescape(msg_data, "scene", mqtt_parm.msg_scene, sizeof(mqtt_parm.msg_scene)); - LOG_I("scene:%s\n",mqtt_parm.msg_scene); + LOG_I("payload:%s\n",payload); + get_string_from_json_string_by_key_unescape(payload,"messageId",mqtt_parm.msg_messageId,sizeof(mqtt_parm.msg_messageId)); + LOG_I("messageId:%s\n",mqtt_parm.msg_messageId); - get_string_from_json_string_by_key_unescape(msg_data, "lights", mqtt_parm.msg_lights, sizeof(mqtt_parm.msg_lights)); - LOG_I("lights:%s\n",mqtt_parm.msg_lights); + get_size_from_json_string_arry_by_key(payload, "functions", &mqtt_parm.msg_opNumber); + LOG_I("functions size = %d\n", mqtt_parm.msg_opNumber); + for(int i = 0; i < mqtt_parm.msg_opNumber; i++){ + get_string_from_json_string_arry_by_key(payload,"functions",msg_functions_value,1024,i); + snprintf(msg_functions, sizeof(msg_functions), "{%s}", msg_functions_value); + LOG_I("msg_functions = %s\n", msg_functions); + get_string_from_json_string_by_key_unescape(msg_functions, "key", mqtt_parm.msg_key,sizeof(mqtt_parm.msg_key)); + LOG_I("msg_key = %s\n", mqtt_parm.msg_key); + get_string_from_json_string_by_key_unescape(msg_functions, "in", msg_in_value,sizeof(msg_in_value)); + snprintf(msg_in, sizeof(msg_in), "{%s}", msg_in_value); + LOG_I("msg_in = %s\n", msg_in); + get_string_from_json_string_by_key_unescape(msg_in, "dev-name", mqtt_parm.msg_devName,sizeof(mqtt_parm.msg_devName)); + LOG_I("msg_devName = %s\n", mqtt_parm.msg_devName); + get_string_from_json_string_by_key_unescape(msg_in, "task-id", mqtt_parm.msg_taskId,sizeof(mqtt_parm.msg_taskId)); + LOG_I("msg_taskId = %s\n", mqtt_parm.msg_taskId); + get_string_from_json_string_by_key_unescape(msg_in, "group-no", mqtt_parm.msg_groupNo,sizeof(mqtt_parm.msg_groupNo)); + LOG_I("msg_groupNo = %s\n", mqtt_parm.msg_groupNo); + get_int_from_json_string_by_key(msg_in,"action",&mqtt_parm.msg_action); + LOG_I("msg_action = %d\n", mqtt_parm.msg_action); + get_int_from_json_string_by_key(msg_in,"color",&mqtt_parm.msg_color); + LOG_I("msg_color = %d\n", mqtt_parm.msg_color); + //0灭 1红 2蓝 3绿 4黄 5紫 6青 7白 jingdong + //0灭 1蓝 2绿 3青 4红 5紫 6黄 7白 yitaile + if(mqtt_parm.msg_color==1){ + changecolor=4; + }else if(mqtt_parm.msg_color==2){ + changecolor=1; + }else if(mqtt_parm.msg_color==3){ + changecolor=2; + }else if(mqtt_parm.msg_color==4){ + changecolor=6; + }else if(mqtt_parm.msg_color==5){ + changecolor=5; + }else if(mqtt_parm.msg_color==6){ + changecolor=3; + }else if(mqtt_parm.msg_color==7){ + changecolor=7; + }else if(mqtt_parm.msg_color==0){ + changecolor=1; + } + LOG_I("changecolor=%d\n",changecolor); + get_int_from_json_string_by_key(msg_in,"duration",&mqtt_parm.msg_duration); + LOG_I("msg_duration = %d\n", mqtt_parm.msg_duration); + if(mqtt_parm.msg_duration<=5){ + mqtt_parm.msg_duration=5; + LOG_I("new msg_duration = %d\n", mqtt_parm.msg_duration); + } + //get_string_from_json_string_by_key_unescape(msg_in, "lightbars", msg_lightbars_value,sizeof(msg_lightbars_value)); + lightbars_size=0; + get_size_from_json_string_arry_by_key(msg_in, "lightbars", &lightbars_size); + LOG_I("lightbars_size = %d\n", lightbars_size); + memset(lightsn1,0,7); + memset(lightsn2,0,7); + memset(lightsn3,0,7); + memset(lightsn4,0,7); + memset(lightsn5,0,7); + memset(lightsn6,0,7); + memset(lightsn7,0,7); + memset(lightsn8,0,7); + memset(lightsn9,0,7); + memset(lightsn10,0,7); + memset(lightsn11,0,7); + memset(lightsn12,0,7); + memset(lightsn13,0,7); + memset(lightsn14,0,7); + memset(lightsn15,0,7); + memset(lightsn16,0,7); + memset(lightsn17,0,7); + memset(lightsn18,0,7); + memset(lightsn19,0,7); + memset(lightsn20,0,7); + memset(lightsn21,0,7); + memset(lightsn22,0,7); + memset(lightsn23,0,7); + memset(lightsn24,0,7); + memset(lightsn25,0,7); + memset(lightsn26,0,7); + memset(lightsn27,0,7); + memset(lightsn28,0,7); + memset(lightsn29,0,7); + memset(lightsn30,0,7); + for(int j=0;j=30){ - get_string_from_json_string_by_key_unescape(msg_data, "color", mqtt_parm.msg_color, sizeof(mqtt_parm.msg_color)); - LOG_I("color:%s\n",mqtt_parm.msg_color); - get_string_from_json_string_by_key_unescape(msg_data, "sound", mqtt_parm.msg_sound, sizeof(mqtt_parm.msg_sound)); - LOG_I("sound:%s\n",mqtt_parm.msg_sound); - get_string_from_json_string_by_key_unescape(msg_data, "flash", mqtt_parm.msg_flash, sizeof(mqtt_parm.msg_flash)); - LOG_I("flash:%s\n",mqtt_parm.msg_flash); - get_string_from_json_string_by_key_unescape(msg_data, "flashInterval", mqtt_parm.msg_flashInterval, - sizeof(mqtt_parm.msg_flashInterval)); - LOG_I("flashInterval:%s\n",mqtt_parm.msg_flashInterval); - get_string_from_json_string_by_key_unescape(msg_data, "lightDuration", mqtt_parm.msg_lightDuration, - sizeof(mqtt_parm.msg_lightDuration)); - LOG_I("lightDuration:%s\n",mqtt_parm.msg_lightDuration); - - if(isLightEnable && (mqtt_parm.msg_opNumber>0)){ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - isSendComEnd=false; - isLightOn=true; - isLightOnByRule=false; - isLabelUp=false; - isSearchLabel=false; - uart_data_send_head_lighton(&uartSend,5,lightsnNum); - }else{ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"light disabled or sn is null",0,productid); - } - }else if(strcmp(mqtt_parm.msg_type,"3022")==0){ - LOG_I("3022 updata lable\n"); - get_string_from_json_string_by_key_unescape(msg_data, "label1", mqtt_parm.msg_label1, sizeof(mqtt_parm.msg_label1)); - LOG_I("label1:%s\n",mqtt_parm.msg_label1); - get_string_from_json_string_by_key_unescape(msg_data, "label2", mqtt_parm.msg_label2, sizeof(mqtt_parm.msg_label2)); - LOG_I("label2:%s\n",mqtt_parm.msg_label2); - get_string_from_json_string_by_key_unescape(msg_data, "label3", mqtt_parm.msg_label3, sizeof(mqtt_parm.msg_label3)); - LOG_I("label3:%s\n",mqtt_parm.msg_label3); - get_string_from_json_string_by_key_unescape(msg_data, "sn", mqtt_parm.msg_sn, sizeof(mqtt_parm.msg_sn)); - LOG_I("sn:%s\n",mqtt_parm.msg_sn); - if(strcmp(mqtt_parm.msg_sn,"")!=0){ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - isSendComEnd=false; - isLightOn=false; - isLightOnByRule=false; - isLabelUp=true; - isSearchLabel=false; - uart_data_send_head_lableup(&uartSend,5,1); - }else{ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"sn is empty",0,productid); - } - }else if(strcmp(mqtt_parm.msg_type,"3023")==0){ - LOG_I("3023 light on by rule\n"); - get_string_from_json_string_by_key_unescape(msg_data, "labelConfig", msg_labelconfig_value, sizeof(msg_labelconfig_value)); - snprintf(msg_labelconfig, sizeof(msg_labelconfig), "{%s}", msg_labelconfig_value); - LOG_I("msg_labelconfig:%s\n",msg_labelconfig); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label1", mqtt_parm.msg_label1, sizeof(mqtt_parm.msg_label1)); - LOG_I("label1:%s\n",mqtt_parm.msg_label1); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label2", mqtt_parm.msg_label2, sizeof(mqtt_parm.msg_label2)); - LOG_I("label2:%s\n",mqtt_parm.msg_label2); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label3", mqtt_parm.msg_label3, sizeof(mqtt_parm.msg_label3)); - LOG_I("label3:%s\n",mqtt_parm.msg_label3); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label1Rule", mqtt_parm.msg_label1Rule, - sizeof(mqtt_parm.msg_label1Rule)); - LOG_I("label1Rule:%s\n",mqtt_parm.msg_label1Rule); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label2Rule", mqtt_parm.msg_label2Rule, - sizeof(mqtt_parm.msg_label2Rule)); - LOG_I("label2Rule:%s\n",mqtt_parm.msg_label2Rule); - get_string_from_json_string_by_key_unescape(msg_labelconfig, "label3Rule", mqtt_parm.msg_label3Rule, - sizeof(mqtt_parm.msg_label3Rule)); - LOG_I("label3Rule:%s\n",mqtt_parm.msg_label3Rule); - get_string_from_json_string_by_key_unescape(msg_data, "color", mqtt_parm.msg_color, sizeof(mqtt_parm.msg_color)); - LOG_I("color:%s\n",mqtt_parm.msg_color); - get_string_from_json_string_by_key_unescape(msg_data, "sound", mqtt_parm.msg_sound, sizeof(mqtt_parm.msg_sound)); - LOG_I("sound:%s\n",mqtt_parm.msg_sound); - get_string_from_json_string_by_key_unescape(msg_data, "flash", mqtt_parm.msg_flash, sizeof(mqtt_parm.msg_flash)); - LOG_I("flash:%s\n",mqtt_parm.msg_flash); - get_string_from_json_string_by_key_unescape(msg_data, "flashInterval", mqtt_parm.msg_flashInterval, - sizeof(mqtt_parm.msg_flashInterval)); - LOG_I("flashInterval:%s\n",mqtt_parm.msg_flashInterval); - get_string_from_json_string_by_key_unescape(msg_data, "lightDuration", mqtt_parm.msg_lightDuration, - sizeof(mqtt_parm.msg_lightDuration)); - LOG_I("lightDuration:%s\n",mqtt_parm.msg_lightDuration); - - if(strcmp(msg_labelconfig_value,"")!=0){ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); - isSendComEnd=false; - isLightOn=false; - isLightOnByRule=true; - isLabelUp=false; - isSearchLabel=false; - uart_data_send_head_lightonrule(&uartSend,5); - }else{ - mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"labelconfig is empty",0,productid); - } - } - } + }else { + } + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=false; + isLightOn=true; + isBindTag=false; + changesound=1; + //P点灯 B绑定 &群控(不支持) *根据id点亮 + uart_data_send_head(&uartSend,'P',5,mqtt_parm.msg_duration/5,lightbars_size); + }else if(mqtt_parm.msg_action==2){ + LOG_I("light off by id\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=false; + isLightOn=true; + isBindTag=false; + changecolor=0; + changesound=0; + uart_data_send_head(&uartSend,'P',5,mqtt_parm.msg_duration/5,lightbars_size); + }else if(mqtt_parm.msg_action==3){ + LOG_I("light on all\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=true; + isLightOn=false; + isBindTag=false; + changesound=1; + uart_data_send_head(&uartSend,'*',5,mqtt_parm.msg_duration/5,1); + }else if(mqtt_parm.msg_action==4){ + LOG_I("light off all\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=true; + isLightOn=false; + isBindTag=false; + changecolor=0; + changesound=0; + uart_data_send_head(&uartSend,'*',5,mqtt_parm.msg_duration/5,1); + }else if(mqtt_parm.msg_action==5){ + LOG_I("light on by group\n"); + changesound=1; + if(strcmp(mqtt_parm.msg_groupNo,"0")==0){ + LOG_I("group unbind\n"); + isSendComEnd=false; + isLightOnByGroup=true; + isLightOnById=false; + isLightOn=false; + isBindTag=false; + groupno=0; + uart_data_send_head(&uartSend,'&',5,mqtt_parm.msg_duration/5,1); + }else if(strcmp(mqtt_parm.msg_groupNo,"1")==0){ + LOG_I("group bind\n"); + isSendComEnd=false; + isLightOnByGroup=true; + isLightOnById=false; + isLightOn=false; + isBindTag=false; + groupno=1; + uart_data_send_head(&uartSend,'&',5,mqtt_parm.msg_duration/5,1); + }else if(strcmp(mqtt_parm.msg_groupNo,"255")==0){ + LOG_I("group light on all\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=true; + isLightOn=false; + isBindTag=false; + uart_data_send_head(&uartSend,'*',5,mqtt_parm.msg_duration/5,1); + } + }else if(mqtt_parm.msg_action==6){ + LOG_I("light off by group\n"); + changecolor=0; + changesound=0; + if(strcmp(mqtt_parm.msg_groupNo,"0")==0){ + LOG_I("group unbind\n"); + isSendComEnd=false; + isLightOnByGroup=true; + isLightOnById=false; + isLightOn=false; + isBindTag=false; + groupno=0; + uart_data_send_head(&uartSend,'&',5,mqtt_parm.msg_duration/5,1); + }else if(strcmp(mqtt_parm.msg_groupNo,"1")==0){ + LOG_I("group bind\n"); + isSendComEnd=false; + isLightOnByGroup=true; + isLightOnById=false; + isLightOn=false; + isBindTag=false; + groupno=1; + uart_data_send_head(&uartSend,'&',5,mqtt_parm.msg_duration/5,1); + }else if(strcmp(mqtt_parm.msg_groupNo,"255")==0){ + LOG_I("group light off all\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=true; + isLightOn=false; + isBindTag=false; + uart_data_send_head(&uartSend,'*',5,mqtt_parm.msg_duration/5,1); + } + }else if(mqtt_parm.msg_action==7){ + LOG_I("bind\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=false; + isLightOn=false; + isBindTag=true; + groupno=1; + uart_data_send_head(&uartSend,'B',5,0,lightbars_size); + }else if(mqtt_parm.msg_action==8){ + LOG_I("unbind\n"); + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=false; + isLightOn=false; + isBindTag=true; + groupno=0; + uart_data_send_head(&uartSend,'B',5,0,lightbars_size); + } + } } usleep(getPayloadTime); }else{ @@ -1446,15 +1849,21 @@ void hmacsha1(char *key,char* data,char *signbase64,int signbase64_len){ } void getLocalIp(char *local_ip){ - char hostname[32]={0}; FILE *fp; char buffer[64]={0}; - //get_ip_by_domain(hostname, local_ip, 32); fp=popen("ifconfig eth0 | grep 'inet' | awk '{print $2}' | cut -d':' -f2","r"); fgets(buffer,sizeof(buffer),fp); - LOG_I("buffer:%s\n",buffer); + //LOG_I("buffer:%s\n",buffer); memcpy(local_ip,buffer,strlen(buffer)-1); } +void getLocalMac(char *local_mac){ + FILE *fp; + char buffer[64]={0}; + fp=popen("ifconfig eth0 | grep 'ether' | awk '{print $2}' | tr -d ':'","r"); + fgets(buffer,sizeof(buffer),fp); + //LOG_I("buffer:%s\n",buffer); + memcpy(local_mac,buffer,strlen(buffer)-1); +} void saveStartUpTime(){ system("rm ./startUpTime"); @@ -1485,7 +1894,7 @@ void updateStationInfo(char *msg_id){ LOG_I("local_ip:%s\n",local_ip); calculateStartUpTime(startTime); LOG_I("Time:%s\n",startTime); - mqtt_server_station_status_report(msg_id,productid,stationsn,local_ip,softwareVersion,"1",startTime); + //mqtt_server_station_status_report(msg_id,productid,stationsn,local_ip,softwareVersion,"1",startTime); } bool timeNew(){ @@ -1513,7 +1922,6 @@ int main(int argc, char *argv[]) LOG_I("version:%s\n",softwareVersion); system("insmod /system/lib/modules/wk2xxx_spi.ko"); - //system("busybox udhcpc -i eth0"); system("timedatectl set-timezone Asia/Shanghai"); uart_open(&uartSend,"/dev/ttyS0");//U12 ttyS0,U14 ttyS4,U21 ttysWK0 U13 ttysWK1 U15 ttysWK2 U22 ttysWK3 U20 ttyS1 uart_init(&uartSend,115200,8,1,'N',0); @@ -1523,8 +1931,11 @@ int main(int argc, char *argv[]) uart_open(&uartRecvBack,"/dev/ttysWK0"); uart_init(&uartRecvBack,115200,8,1,'N',0); //doCommand_help(0, NULL); - //sleep(5); -#if 1 + system("echo 113 > /sys/class/gpio/export");//pin 113 yellow + system("echo out > /sys/class/gpio/gpio113/direction"); + system("echo 63 > /sys/class/gpio/export");//pin 63 key + system("echo in > /sys/class/gpio/gpio63/direction"); +#if 0 enableWatchDog(); ret = pthread_create(&pt_watchdog,NULL,thread_feed_watchdog,NULL); if(ret!=0){ @@ -1571,14 +1982,6 @@ int main(int argc, char *argv[]) LOG_I("pthread_create mqtt_recv success\n"); } - ret = pthread_create(&pt_tagsearch,NULL,thread_tag_search_send,NULL); - if(ret!=0){ - LOG_I("pthread_create tag search send fail\n"); - }else{ - LOG_I("pthread_create tag search success\n"); - pthread_detach(pt_tagsearch); - } - ret = pthread_create(&pt_removeduplicatetag,NULL,thread_remove_duplicate_tag,NULL); if(ret!=0){ LOG_I("pthread_create remove duplicate tag send fail\n"); @@ -1595,7 +1998,7 @@ int main(int argc, char *argv[]) LOG_I("pthread_create removelog success\n"); pthread_detach(pt_removelog); } - +#if 0 ret = pthread_create(&pt_readqr,NULL,thread_readqr,NULL); if(ret!=0){ LOG_I("pthread_create readqr fail\n"); @@ -1604,17 +2007,25 @@ int main(int argc, char *argv[]) LOG_I("pthread_create readqr success\n"); pthread_detach(pt_readqr); } - - readresult=file_to_buffer("savedDevSn",&len); - while(readresult==NULL){ - readresult=file_to_buffer("savedDevSn",&len); - sleep(5); - LOG_I("please scan sn\n"); +#endif + ret = pthread_create(&pt_reporttag,NULL,thread_reporttag,NULL); + if(ret!=0){ + LOG_I("pthread_create reporttag fail\n"); + system("reboot"); + }else{ + LOG_I("pthread_create reporttag success\n"); + pthread_detach(pt_reporttag); } - strncpy(stationsn,readresult,len); - readresult=NULL; - LOG_I("saved stationsn:%s\n",stationsn); + ret = pthread_create(&pt_keycheck,NULL,thread_keycheck,NULL); + if(ret!=0){ + LOG_I("pthread_create keycheck fail\n"); + system("reboot"); + }else{ + LOG_I("pthread_create keycheck success\n"); + pthread_detach(pt_keycheck); + } +#if 0 readresult=file_to_buffer("mqttRawPassword",&len); if(readresult!=NULL){ strncpy(mqttRawPassword,readresult,len); @@ -1639,6 +2050,34 @@ int main(int argc, char *argv[]) readresult=NULL; } +#endif + readresult=file_to_buffer("savedDevSn",&len); + while(readresult==NULL){ + readresult=file_to_buffer("savedDevSn",&len); + sleep(5); + LOG_I("please scan sn\n"); + } + strncpy(stationsn,readresult,len); + readresult=NULL; + LOG_I("saved stationsn:%s\n",stationsn); +#if 0 + isSendComEnd=false; + isLightOnByGroup=false; + isLightOnById=false; + isLightOn=true; + isBindTag=false; + lightbars_size=5; + changecolor=4; + changesound=1; + groupno=1; + //uart_data_send_head(&uartSend,'B',5,0,lightbars_size);//bind groupno + uart_data_send_head(&uartSend,'P',5,10/5,lightbars_size);//lighton by tag + //uart_data_send_head(&uartSend,'*',5,5/5,0);//lighton by id + //uart_data_send_head(&uartSend,'&',5,5/5,1);//lighton by groupno + //uart_data_send_head(&uartSend,'R',5,30/5,1);//stop broadcast by groupno + //isStopBroadcast=true; +#endif +#if 1 while(1){ if((ping("8.8.8.8") == 0)||(ping("8.8.4.4") == 0)){ LOG_I("net ok\n"); @@ -1650,7 +2089,7 @@ int main(int argc, char *argv[]) } sleep(1); } - saveStartUpTime(); + //saveStartUpTime(); ret = pthread_create(&pt_mqtt,NULL,thread_mqtt,NULL); if(ret!=0){ LOG_I("pthread_create mqtt fail\n"); @@ -1665,7 +2104,7 @@ int main(int argc, char *argv[]) sleep(3); } } -#if 1 +#endif while(1) { fgets(command_buffer, sizeof(command_buffer), stdin); @@ -1674,7 +2113,6 @@ int main(int argc, char *argv[]) LOG_I("unsupport command!\r\n"); } } -#endif return 0; } diff --git a/main.h b/main.h index e356462..f086aae 100644 --- a/main.h +++ b/main.h @@ -83,6 +83,7 @@ typedef struct { uint32_t name; uint16_t battery; + uint16_t reserve; }__attribute__((packed)) jt_only_tag_t; void hgz_init_db_multy(mqtt_parm_t *mqtt_parm); @@ -163,5 +164,5 @@ void getDevRegisterStatus(char *devsn); void hgz_get_returninfo_by_cellname(char *cellname,int *userid,char *batchid,char *username,char *devsn); void getDevInfo(char *parm); void *actHandleQrcode(void *parm); -void updateStationInfo(char *msg_id); +void station_status_report(void); #endif diff --git a/mqtt_utils/mqtt_utils.c b/mqtt_utils/mqtt_utils.c index 336d996..e20d08c 100644 --- a/mqtt_utils/mqtt_utils.c +++ b/mqtt_utils/mqtt_utils.c @@ -57,13 +57,11 @@ trace_level_name_t trace_level_name_list[] = { {MQTTASYNC_TRACE_FATAL, "MQTTASYNC_TRACE_FATAL"}, }; -void mqtt_server_light_status_report(char *sn,char *msg_id,char *scene,json_object *lights){ +void mqtt_server_events_report(char *sn,char *msg_id,json_object *events){ char topic[128] = ""; const char *payload = NULL; - char time_buffer[128] = ""; + char time_buffer[16] = ""; json_object *root = NULL; - json_object *data = NULL; - json_object *msg = NULL; struct timeval tv; gettimeofday(&tv, NULL); snprintf(time_buffer,sizeof(time_buffer),"%ld",tv.tv_sec*1000+tv.tv_usec); @@ -73,31 +71,13 @@ void mqtt_server_light_status_report(char *sn,char *msg_id,char *scene,json_obje LOG_I("json_object_new_object error\n"); goto json_error; } - msg = json_object_new_object(); - if(msg == NULL){ - LOG_I("msg: NULL\n"); - goto json_error; - } - - data = json_object_new_object(); - if(msg == NULL){ - LOG_I("msg: NULL\n"); - goto json_error; - } json_object_object_add(root, "deviceId", json_object_new_string(sn)); json_object_object_add(root, "messageId", json_object_new_string(msg_id)); - json_object_object_add(root, "productId", json_object_new_string(mqtt_conf->productcode)); json_object_object_add(root, "timestamp", json_object_new_string(time_buffer)); + json_object_object_add(root, "events", events); - json_object_object_add(data, "scene", json_object_new_string(scene)); - json_object_object_add(data, "lights", lights); - - json_object_object_add(msg, "data", data); - json_object_object_add(msg, "msgType", json_object_new_string("9007")); - json_object_object_add(root, "msg", msg); - - snprintf(topic, sizeof(topic), "iot/%s/message/report",mqtt_conf->productcode); + snprintf(topic, sizeof(topic), "$iot/v1/device/%s/events/post",sn); LOG_I("publish topic:[%s]\n", topic); payload = json_object_to_json_string(root); LOG_I("payload[%d][%s]\n", strlen(payload), payload); @@ -106,64 +86,15 @@ json_error: json_object_put(root); } -void mqtt_server_station_status_report(char *msg_id,char *product_id,char *sn,char *local_ip, char *base_version, - char *status, char *duration){ - char topic[128] = ""; - const char *payload = NULL; - char time_buffer[128] = ""; - json_object *root = NULL; - json_object *msg = NULL; - json_object *data = NULL; - - struct timeval tv; - gettimeofday(&tv, NULL); - snprintf(time_buffer,sizeof(time_buffer),"%ld",tv.tv_sec*1000+tv.tv_usec); - - //LOG_I("%s\n", __func__); - root = json_object_new_object(); - if(root == NULL){ - LOG_I("json_object_new_object error\n"); - goto json_error; - } - - msg = json_object_new_object(); - if(msg == NULL){ - LOG_I("msg: NULL\n"); - goto json_error; - } - - data = json_object_new_object(); - if(msg == NULL){ - LOG_I("msg: NULL\n"); - goto json_error; - } - json_object_object_add(root, "deviceId", json_object_new_string(sn)); - json_object_object_add(root, "messageId", json_object_new_string(msg_id)); - json_object_object_add(root, "productId", json_object_new_string(mqtt_conf->productcode)); - json_object_object_add(root, "timestamp", json_object_new_string(time_buffer)); - - json_object_object_add(data, "ip", json_object_new_string(local_ip)); - json_object_object_add(data, "baseVersion", json_object_new_string(base_version)); - json_object_object_add(data, "status", json_object_new_string(status)); - json_object_object_add(data, "duration", json_object_new_string(duration)); - - json_object_object_add(msg, "data", data); - json_object_object_add(msg, "msgType", json_object_new_string("9008")); - json_object_object_add(root, "msg", msg); - snprintf(topic, sizeof(topic), "iot/%s/message/report",mqtt_conf->productcode); - LOG_I("publish topic:[%s]\n", topic); - payload = json_object_to_json_string(root); - LOG_I("payload[%d][%s]\n", strlen(payload), payload); - mqtt_utils_publish(mqtt_conf, topic, 2, payload, strlen(payload)); -json_error: - json_object_put(root); -} - -void mqtt_service_reply(char *sn,char *msg_id,char *msg,int success,char *product_id) +void mqtt_server_reply(char *sn,char *msg_id,json_object *functions) { char topic[128] = ""; const char *payload = NULL; json_object *root = NULL; + struct timeval tv; + char time_buffer[16] = ""; + gettimeofday(&tv, NULL); + snprintf(time_buffer,sizeof(time_buffer),"%ld",tv.tv_sec*1000+tv.tv_usec); //LOG_I("%s\n", __func__); root = json_object_new_object(); @@ -174,11 +105,12 @@ void mqtt_service_reply(char *sn,char *msg_id,char *msg,int success,char *produc json_object_object_add(root, "deviceId", json_object_new_string(sn)); json_object_object_add(root, "messageId", json_object_new_string(msg_id)); - json_object_object_add(root, "msg", json_object_new_string(msg)); - json_object_object_add(root, "success", json_object_new_boolean(success)); - json_object_object_add(root, "productId", json_object_new_string(mqtt_conf->productcode)); + json_object_object_add(root, "timestamp", json_object_new_string(time_buffer)); + json_object_object_add(root, "code", json_object_new_int(200)); + json_object_object_add(root, "message", json_object_new_string("success")); + json_object_object_add(root, "payload", functions); - snprintf(topic, sizeof(topic), "iot/%s/adviceDevice/reply",mqtt_conf->productcode); + snprintf(topic, sizeof(topic), "$iot/v1/device/%s/functions/call/response",sn); LOG_I("publish topic:[%s]\n", topic); payload = json_object_to_json_string(root); LOG_I("payload[%d][%s]\n", strlen(payload), payload); @@ -203,7 +135,7 @@ int printVersionInfo(MQTTAsync_nameValue * info){ int rc = 0; //LOG_I("MQTT library information:\n"); while (info->name){ - //LOG_I("%s: %s\n", info->name, info->value); + LOG_I("%s: %s\n", info->name, info->value); info++; rc = 1; /* at least one value printed */ } @@ -256,9 +188,7 @@ void mqtt_utils_connected(void *context, char *cause){ connect_failure_times=0; mqtt_utils_subscribe(mqtt_conf,nativeInvokTopicName,2); system("echo 1 > /sys/class/gpio/gpio113/value");//yellow ok - char myid[32]={0}; - myrand(myid,19); - updateStationInfo(myid); + station_status_report(); } void mqtt_utils_disconnected(void *context, MQTTProperties* props, enum MQTTReasonCodes rc){ @@ -344,7 +274,7 @@ int mqtt_utils_init(mqtt_utils_t *mqtt_config) MQTTAsync_setTraceLevel(mqtt_conf->tracelevel); //snprintf(url, sizeof(url), "%s://%s:%d", mqtt_conf->protocol, mqtt_conf->host, mqtt_conf->port); - snprintf(url, sizeof(url), "tcp://%s:%d", mqtt_conf->host, mqtt_conf->port); + snprintf(url, sizeof(url), "ssl://%s:%d", mqtt_conf->host, mqtt_conf->port); LOG_I("mqtt url=%s\n", url); create_opts.sendWhileDisconnected = 0; rc = MQTTAsync_createWithOptions(&mqtt_conf->client, @@ -406,14 +336,41 @@ int mqtt_utils_init(mqtt_utils_t *mqtt_config) conn_opts.will = &will_opts; } + //ssl_opts.keyStore = clientCrt; //客户端证书路径 + //ssl_opts.trustStore = CAFile; //ca证书路径 + //ssl_opts.privateKey = clientKey; //客户端密钥路径 + //ssl_opts.privateKeyPassword = mqtt_tls_port->clientKeyPasswd; //密钥,如果有客户端密钥路径该项可为空 + //ssl_opts.sslVersion = MQTT_SSL_VERSION_DEFAULT; + //conn_opts.ssl = &ssl_opts; + + + // 证书和密钥路径(根据实际位置修改) + //const char* clientCrt = "/path/to/client.crt"; // 客户端证书 + //const char* CAFile = "/path/to/ca.crt"; // CA证书 + //const char* clientKey = "/path/to/client.key"; // 客户端私钥 + + // 配置SSL选项 + //MQTTClient_SSLOptions ssl_opts = MQTTClient_SSLOptions_initializer; + //ssl_opts.keyStore = clientCrt; + //ssl_opts.trustStore = CAFile; + //ssl_opts.privateKey = clientKey; + //ssl_opts.privateKeyPassword = "key_password"; // 若私钥未加密则设为NULL + //ssl_opts.sslVersion = MQTT_SSL_VERSION_TLS_1_2; // 显式指定TLS 1.2 + + // 关联到连接选项 + //MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; + //conn_opts.ssl = &ssl_opts; + + if (mqtt_conf->insecure){ - ssl_opts.verify = 0; - ssl_opts.CApath = mqtt_conf->capath; + LOG_I("use key file\n"); + ssl_opts.enableServerCertAuth = 1; + //ssl_opts.CApath = mqtt_conf->capath; ssl_opts.keyStore = mqtt_conf->cert; ssl_opts.trustStore = mqtt_conf->cafile; ssl_opts.privateKey = mqtt_conf->key; - ssl_opts.privateKeyPassword = mqtt_conf->keypass; - ssl_opts.enabledCipherSuites = mqtt_conf->ciphers; + //ssl_opts.privateKeyPassword = mqtt_conf->keypass; + //ssl_opts.enabledCipherSuites = mqtt_conf->ciphers; ssl_opts.ssl_error_cb = mqtt_utils_on_ssl_error; ssl_opts.ssl_error_context = NULL; conn_opts.ssl = &ssl_opts; @@ -434,8 +391,7 @@ int mqtt_utils_init(mqtt_utils_t *mqtt_config) mqtt_conf->sub_opts.onFailure = mqtt_utils_on_subscribe_failure; mqtt_conf->sub_opts.context = NULL; - //sprintf(nativeInvokTopicName,"iot/10025/%s/message/adviceDevice",mqtt_conf->clientid); - sprintf(nativeInvokTopicName,"iot/%s/%s/message/adviceDevice",mqtt_conf->productcode,mqtt_conf->username); + sprintf(nativeInvokTopicName,"$iot/v1/device/%s/functions/call",mqtt_conf->username); LOG_I("nativeInvokTopicName:%s\n",nativeInvokTopicName); ret = 0; diff --git a/mqtt_utils/mqtt_utils.h b/mqtt_utils/mqtt_utils.h index 70f390c..9d0925f 100644 --- a/mqtt_utils/mqtt_utils.h +++ b/mqtt_utils/mqtt_utils.h @@ -78,84 +78,29 @@ typedef struct{ typedef struct { char msg_deviceId[32]; - char msg_messageId[32]; - char msg_type[32]; - char msg_zipPath[512]; - char msg_version[32]; - char msg_scene[32]; - char msg_timeout[32]; - char msg_label1[32]; - char msg_label2[32]; - char msg_label3[32]; - char msg_label1Rule[32]; - char msg_label2Rule[32]; - char msg_label3Rule[32]; - char msg_color[32]; - char msg_sound[32]; - char msg_flash[32]; - char msg_flashInterval[32]; - char msg_lightDuration[32]; - char msg_sn[32]; - char msg_lights[128]; - int msg_needWifi; - int msg_installType; - int msg_immediately; - int msg_installTime; - int msg_timestamp; + char msg_messageId[64]; + char msg_key[32]; + char msg_devName[32]; + char msg_taskId[32]; + char msg_groupNo[4]; + char msg_time[32]; + char msg_ext1[32]; + char msg_ext2[32]; + char msg_sn[7]; int msg_opNumber; + int msg_action; + int msg_color; + int msg_duration; }mqtt_parm_t; -typedef struct -{ - char cabinetName[2]; - char cellName[32]; - char cellState[32]; - char cellVoltageType[32]; - char cellConnectorType[32]; - char cellRepairType[64]; - char devType[32]; - char devCheckType[32]; - char devSn[64]; - char devPvd[32]; - char devPro[64]; - char devMfg[64]; - char devState[32]; - char devRepairType[512]; - char batchId[64]; - char opType[64]; - char opTime[64]; - int devPwr; - int userId; -}db_parm_t; - -typedef struct{ - char result[1024]; - char opTime[32]; - char opType[32]; - char status[32]; - int userId; -}test_parm_t; - extern void mqtt_net_failure(int *failure_times); extern int mqtt_utils_init(mqtt_utils_t *mqtt_utils); extern int get_trace_level_by_name(char *name); extern int mqtt_utils_subscribe(mqtt_utils_t *mqtt_utils, char *topic, int qos); extern int mqtt_utils_publish(mqtt_utils_t *mqtt_utils, char *topic, int qos, const char *data, int datalen); extern int mqtt_utils_uninit(mqtt_utils_t *mqtt_utils); -void mqtt_service_invoke_reply(char *msg_id, char *code, char *status, char *msg_type, char *json_name, struct json_object *json_val); -void mqtt_service_cell_report(char *cellName,db_parm_t *db_parm); -void mqtt_service_returndev_event_report(char *cellName,db_parm_t *db_parm); -void mqtt_service_losedev_event_report(char *cellName,db_parm_t *db_parm); -void mqtt_service_borrowdev_event_report(char *cellName,db_parm_t *db_parm); -void mqtt_service_managedev_event_report(test_parm_t *test_parm,char *eventType); -void mqtt_service_uploadlog_report(char *filename,char *fileurl,char *msg_id); -void mqtt_service_downloadapp_report(char *msg_id,int task_id,char *code,char *message); -void mqtt_service_softversion_report(char *fwversion); -void mqtt_handle_error_event_report(char *cellname,char *batchid,char *optime,int userid,char *opType); -void mqtt_server_station_status_report(char *msg_id,char *product_id,char *sn,char *local_ip, char *base_version, - char *status, char *duration); -void mqtt_service_reply(char *sn,char *msg_id,char *msg,int success,char *product_id); -void mqtt_server_light_status_report(char *sn,char *msg_id,char *scene,json_object *lights); +void mqtt_server_reply(char *sn,char *msg_id,json_object *functions); +void mqtt_server_events_report(char *sn,char *msg_id,json_object *events); #ifdef __cplusplus } #endif diff --git a/mymake.sh b/mymake.sh index c4fd06c..780e385 100755 --- a/mymake.sh +++ b/mymake.sh @@ -1,7 +1,8 @@ . compile.sh -#rm -fr output -#mkdir output +rm -fr output +mkdir output cd output -cmake .. +cmake .. -DPAHO_WITH_SSL=TRUE +#cmake .. make cd .. diff --git a/queue/queue.c b/queue/queue.c index 52188a6..cb70d2c 100644 --- a/queue/queue.c +++ b/queue/queue.c @@ -40,7 +40,7 @@ pthread_mutexattr_t g_MutexAttr_m; * 其他说明: 无 * 修改日期 版本号 修改人 修改内容 ****************************************************************/ -void PutDataIntoQueue(uint32_t tagname,uint16_t battery){ +void PutDataIntoQueue(uint32_t tagname,uint16_t battery,uint16_t reserve){ T_StructInfo tQueueData = {0}; // 对结构体的变量进行赋值 @@ -48,6 +48,7 @@ void PutDataIntoQueue(uint32_t tagname,uint16_t battery){ //memcpy(tQueueData.cmd,cmd,4); tQueueData.tagname=tagname; tQueueData.battery=battery; + tQueueData.reserve=reserve; // 将数据加入队列(一直等到加入成功之后才退出) while (EnQueue(tQueueData) == -1){ Sleep(1000); // 加入失败,1秒后重试 @@ -79,7 +80,7 @@ void PutDataIntoMQueue(char *payload){ * 其他说明: 无 * 修改日期 版本号 修改人 修改内容 ****************************************************************/ -int GetDataFromQueue(uint32_t *tagname,uint16_t *battery){ +int GetDataFromQueue(uint32_t *tagname,uint16_t *battery,uint16_t *reserve){ T_StructInfo tQueueData = {0}; if (DeQueue(&tQueueData) == -1){ return -1; @@ -88,6 +89,7 @@ int GetDataFromQueue(uint32_t *tagname,uint16_t *battery){ //memcpy(cmd,tQueueData.cmd,4); *tagname=tQueueData.tagname; *battery=tQueueData.battery; + *reserve=tQueueData.reserve; // 打印取出的数据 //printf("GetDataFromQueue: cellNum=%s, cmd=%s\n", tQueueData.cellNum, tQueueData.cmd); return 0; diff --git a/queue/queue.h b/queue/queue.h index 473c99b..e0c60c9 100644 --- a/queue/queue.h +++ b/queue/queue.h @@ -10,6 +10,7 @@ typedef struct { uint32_t tagname; uint16_t battery; + uint16_t reserve; } T_StructInfo; typedef struct @@ -17,8 +18,8 @@ typedef struct char payload[1024]; } M_StructInfo; -void PutDataIntoQueue(uint32_t tagname,uint16_t battery); -int GetDataFromQueue(uint32_t *tagname,uint16_t *battery); +void PutDataIntoQueue(uint32_t tagname,uint16_t battery,uint16_t reserve); +int GetDataFromQueue(uint32_t *tagname,uint16_t *battery,uint16_t *reserve); INT32 EnQueue(T_StructInfo tQueueData); INT32 DeQueue(T_StructInfo *tDqueueData); diff --git a/ssh.sh b/ssh.sh index 9bbd3e6..32fa282 100755 --- a/ssh.sh +++ b/ssh.sh @@ -1,3 +1,6 @@ -sshpass -p "&Over#B0Ost!" ssh root@10.10.10.101 +sshpass -p "&Over#B0Ost!" ssh root@10.10.12.2 +#sshpass -p "&Over#B0Ost!" ssh root@10.10.12.230 +#sshpass -p "&Over#B0Ost!" ssh root@10.10.10.150 +#sshpass -p "&Over#B0Ost!" ssh root@10.10.10.101 #sshpass -p "PddloTSecPwdOnly!" ssh root@10.10.10.132 #sshpass -p "PddloTSecPwdOnly!" ssh root@192.168.0.148 diff --git a/uart_can/uart_can.c b/uart_can/uart_can.c index 0457483..3e8f688 100644 --- a/uart_can/uart_can.c +++ b/uart_can/uart_can.c @@ -8,6 +8,22 @@ #define DBG_TAG "uart_can" #define DBG_LVL DBG_INFO #include "debug_print.h" +#define CRC32_POLY 0xEDB88320 // CRC32多项式 + +uint32_t CRC32_DIRECT(uint8_t *data, uint32_t length) { + uint32_t crc = 0xFFFFFFFF; // 初始值通常设为0xFFFFFFFF + for (size_t i = 0; i < length; i++) { + crc ^= data[i]; + for (int j = 0; j < 8; j++) { // 对每个位进行处理 + if (crc & 1) { + crc = (crc >> 1) ^ CRC32_POLY; // 多项式右移并异或 + } else { + crc >>= 1; // 右移一位 + } + } + } + return ~crc; // 最终结果取反,根据需要返回或使用原始值 +} uint16_t CRC16_XMODEM(uint8_t *puchMsg, uint32_t usDataLen) { @@ -29,32 +45,37 @@ uint16_t CRC16_XMODEM(uint8_t *puchMsg, uint32_t usDataLen) return (wCRCin); } -int uart_data_send_head_lighton(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num){ +int uart_data_send_head(uart_utils_t *uart,uint8_t func,uint8_t wakeup_time,uint8_t timeout,uint16_t tag_num){ int ret = 0; + //uint8_t data_len=(tag_num*4+4)*2; uint8_t data_len=0; - if(tag_num==1){ - data_len=14; - }else if(tag_num==2){ - data_len=18; - }else if(tag_num==3){ - data_len=22; - }else if(tag_num==4){ - data_len=26; - }else if(tag_num==5){ - data_len=30; + if(func==0x26){//& + data_len=7+tag_num*2; + }else{ + data_len=7+tag_num*4; } + if(func==0x2A){//* + tag_num=1; + data_len=0x15; + } + if(func==0x52){//R + tag_num=1; + data_len=0x0B; + } + jt_head_package_t jt_head_package ={ - .pre=0x2323,//# 0x23 $ 0x24 + .pre=0x4040,//# 0x23 $ 0x24 @ 0x40 .wakeupTime=wakeup_time,//5s,<120s - .func='A', + .func=func, .len1=0x0000, .len2=data_len, - .reserve=ntohs(0x0003), + .timeout=timeout, + .reserve=0x00, .lableNum=ntohs(tag_num), }; - LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, - jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); + LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%02x,%02x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, + jt_head_package.len1,jt_head_package.len2,jt_head_package.timeout,jt_head_package.reserve,jt_head_package.lableNum); if (uart == NULL){ LOG_I("uart NULL pointer\n"); @@ -74,561 +95,37 @@ error: return 0; } -int uart_data_send_head_lableup(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num){ +int uart_data_send_lighton_or_group(uart_utils_t *uart,jt_tag_package_t tags[],uint8_t tag_num){ + LOG_I("%s\n",__func__); int ret = 0; - uint8_t data_len=0; + if (uart == NULL){ + LOG_I("uart NULL pointer\n"); + ret = -1; + goto error; + } + + uint16_t tags_len2=(tag_num+1)*8; + uint16_t custom_code=0x0001; + uint8_t tags_len2_1=(tags_len2>>8)&0xFF; + uint8_t tags_len2_2=(tags_len2)&0xFF; + uint8_t custom_code_1=(custom_code>>8)&0xFF; + uint8_t custom_code_2=(custom_code)&0xFF; + + if(tag_num==1){ - data_len=16; - }else if(tag_num==2){ - data_len=27; - }else if(tag_num==3){ - data_len=38; - }else if(tag_num==4){ - data_len=49; - }else if(tag_num==5){ - data_len=60; - } - jt_head_package_t jt_head_package ={ - .pre=0x2323,//# 0x23 $ 0x24 - .wakeupTime=wakeup_time,//5s,<120s - .func='B', - .len1=0x0000, - .len2=data_len, - .reserve=ntohs(0x0003), - .lableNum=ntohs(tag_num), - }; - - LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, - jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); - - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } -error: - return ret; - return 0; -} - -int uart_data_send_head_lightonrule(uart_utils_t *uart,uint8_t wakeup_time){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - jt_head_package_t jt_head_package ={ - .pre=0x2323,//# 0x23 $ 0x24 - .wakeupTime=wakeup_time,//5s,<120s - .func='C', - .len1=0x0000, - .len2=20, - .reserve=ntohs(0x0003), - .lableNum=ntohs(0x0001), - }; - - LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, - jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); - - if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } -error: - return ret; - return 0; -} - -int uart_data_send_head_search(uart_utils_t *uart,uint8_t wakeup_time){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - jt_head_package_t jt_head_package ={ - .pre=0x2323,//# 0x23 $ 0x24 - .wakeupTime=wakeup_time,//5s,<120s - .func='D', - .len1=0x0000, - .len2=13, - .reserve=ntohs(0x0003), - .lableNum=ntohs(0x0001), - }; - - LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, - jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); - - if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } -error: - return ret; - return 0; -} - -int uart_data_send_search(uart_utils_t *uart,uint8_t lable_1,uint8_t lable_2,uint8_t lable_3,uint8_t lable_4,uint8_t lable_5, - uint8_t lable_6,uint8_t lable_7,uint8_t lable_8){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - uint8_t test1[11] = {0x00,0x00,10,lable_1,lable_2,lable_3,lable_4,lable_5,lable_6,lable_7,lable_8}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<11;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_search_package_t jt_search_package ={ - .len1=0x0000, - .len2=10, - .lable3_1=lable_1, - .lable3_2=lable_2, - .lable3_3=lable_3, - .lable3_4=lable_4, - .lable3_5=lable_5, - .lable3_6=lable_6, - .lable3_7=lable_7, - .lable3_8=lable_8, - .crc=ntohs(crc_c), - }; -#if 1 - if(sizeof(jt_search_package) == write(uart->uart_fd, &jt_search_package, sizeof(jt_search_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } -#endif -error: - return ret; - return 0; -} - -int uart_data_send_light_rule(uart_utils_t *uart,uint8_t lable_1,uint16_t lable_2,uint32_t lable_3, - uint8_t lable_1_rule, uint8_t lable_2_rule, uint8_t lable_3_rule, - uint8_t led_ctrl, uint16_t flash_i, uint16_t light_d){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - uint8_t lable_2_1=(lable_2>>8)&0xFF; - uint8_t lable_2_2=(lable_2)&0xFF; - uint8_t lable_3_1=(lable_3>>24)&0xFF; - uint8_t lable_3_2=(lable_3>>16)&0xFF; - uint8_t lable_3_3=(lable_3>>8)&0xFF; - uint8_t lable_3_4=(lable_3)&0xFF; - uint8_t flash_i_1=(flash_i>>8)&0xFF; - uint8_t flash_i_2=(flash_i)&0xFF; - uint8_t light_d_1=(light_d>>8)&0xFF; - uint8_t light_d_2=(light_d)&0xFF; - - uint8_t test1[18] = {0x00,0x00,17,lable_1,lable_2_1,lable_2_2,lable_3_1,lable_3_2,lable_3_3,lable_3_4, - lable_1_rule,lable_2_rule,lable_3_rule,led_ctrl,flash_i_1,flash_i_2,light_d_1,light_d_2}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<18;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_rule_package_t jt_light_rule_package ={ - .len1=0x0000, - .len2=17, - .lable1=lable_1, - .lable2=ntohs(lable_2), - .lable3=ntohl(lable_3), - .lable1_rule=lable_1_rule, - .lable2_rule=lable_2_rule, - .lable3_rule=lable_3_rule, - .ledctrl=led_ctrl, - .flash_i=ntohs(flash_i), - .light_d=ntohs(light_d), - .crc=ntohs(crc_c), - }; - - if(sizeof(jt_light_rule_package) == write(uart->uart_fd, &jt_light_rule_package, sizeof(jt_light_rule_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } -error: - return ret; - return 0; -} - -int uart_data_send_lable(uart_utils_t *uart,uint32_t tag_1,uint8_t tag_1_lable1,uint16_t tag_1_lable2,uint32_t tag_1_lable3, - uint32_t tag_2,uint8_t tag_2_lable1,uint16_t tag_2_lable2,uint32_t tag_2_lable3, - uint32_t tag_3,uint8_t tag_3_lable1,uint16_t tag_3_lable2,uint32_t tag_3_lable3, - uint32_t tag_4,uint8_t tag_4_lable1,uint16_t tag_4_lable2,uint32_t tag_4_lable3, - uint32_t tag_5,uint8_t tag_5_lable1,uint16_t tag_5_lable2,uint32_t tag_5_lable3, - uint32_t tag_num){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - - uint8_t tag_1_1=(tag_1>>24)&0xFF; - uint8_t tag_1_2=(tag_1>>16)&0xFF; - uint8_t tag_1_3=(tag_1>>8)&0xFF; - uint8_t tag_1_4=(tag_1)&0xFF; - uint8_t tag_1_lable2_1=(tag_1_lable2>>8)&0xFF; - uint8_t tag_1_lable2_2=(tag_1_lable2)&0xFF; - uint8_t tag_1_lable3_1=(tag_1_lable3>>24)&0xFF; - uint8_t tag_1_lable3_2=(tag_1_lable3>>16)&0xFF; - uint8_t tag_1_lable3_3=(tag_1_lable3>>8)&0xFF; - uint8_t tag_1_lable3_4=(tag_1_lable3)&0xFF; - - uint8_t tag_2_1=(tag_2>>24)&0xFF; - uint8_t tag_2_2=(tag_2>>16)&0xFF; - uint8_t tag_2_3=(tag_2>>8)&0xFF; - uint8_t tag_2_4=(tag_2)&0xFF; - uint8_t tag_2_lable2_1=(tag_2_lable2>>8)&0xFF; - uint8_t tag_2_lable2_2=(tag_2_lable2)&0xFF; - uint8_t tag_2_lable3_1=(tag_2_lable3>>24)&0xFF; - uint8_t tag_2_lable3_2=(tag_2_lable3>>16)&0xFF; - uint8_t tag_2_lable3_3=(tag_2_lable3>>8)&0xFF; - uint8_t tag_2_lable3_4=(tag_2_lable3)&0xFF; - - uint8_t tag_3_1=(tag_3>>24)&0xFF; - uint8_t tag_3_2=(tag_3>>16)&0xFF; - uint8_t tag_3_3=(tag_3>>8)&0xFF; - uint8_t tag_3_4=(tag_3)&0xFF; - uint8_t tag_3_lable2_1=(tag_3_lable2>>8)&0xFF; - uint8_t tag_3_lable2_2=(tag_3_lable2)&0xFF; - uint8_t tag_3_lable3_1=(tag_3_lable3>>24)&0xFF; - uint8_t tag_3_lable3_2=(tag_3_lable3>>16)&0xFF; - uint8_t tag_3_lable3_3=(tag_3_lable3>>8)&0xFF; - uint8_t tag_3_lable3_4=(tag_3_lable3)&0xFF; - - uint8_t tag_4_1=(tag_4>>24)&0xFF; - uint8_t tag_4_2=(tag_4>>16)&0xFF; - uint8_t tag_4_3=(tag_4>>8)&0xFF; - uint8_t tag_4_4=(tag_4)&0xFF; - uint8_t tag_4_lable2_1=(tag_4_lable2>>8)&0xFF; - uint8_t tag_4_lable2_2=(tag_4_lable2)&0xFF; - uint8_t tag_4_lable3_1=(tag_4_lable3>>24)&0xFF; - uint8_t tag_4_lable3_2=(tag_4_lable3>>16)&0xFF; - uint8_t tag_4_lable3_3=(tag_4_lable3>>8)&0xFF; - uint8_t tag_4_lable3_4=(tag_4_lable3)&0xFF; - - uint8_t tag_5_1=(tag_5>>24)&0xFF; - uint8_t tag_5_2=(tag_5>>16)&0xFF; - uint8_t tag_5_3=(tag_5>>8)&0xFF; - uint8_t tag_5_4=(tag_5)&0xFF; - uint8_t tag_5_lable2_1=(tag_5_lable2>>8)&0xFF; - uint8_t tag_5_lable2_2=(tag_5_lable2)&0xFF; - uint8_t tag_5_lable3_1=(tag_5_lable3>>24)&0xFF; - uint8_t tag_5_lable3_2=(tag_5_lable3>>16)&0xFF; - uint8_t tag_5_lable3_3=(tag_5_lable3>>8)&0xFF; - uint8_t tag_5_lable3_4=(tag_5_lable3)&0xFF; - if(tag_num==1){ - uint8_t test1[14] = {0x00,0x00,13,tag_1_1,tag_1_2,tag_1_3,tag_1_4, - tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<14;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_lable_led1_package_t jt_lable_led1_package ={ - .len1=0x0000, - .len2=13, - .tag1=ntohl(tag_1), - .tag1_lable1=tag_1_lable1, - .tag1_lable2=ntohs(tag_1_lable2), - .tag1_lable3=ntohl(tag_1_lable3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_lable_led1_package) == write(uart->uart_fd, &jt_lable_led1_package, sizeof(jt_lable_led1_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==2){ - uint8_t test1[25] = {0x00,0x00,24,tag_1_1,tag_1_2,tag_1_3,tag_1_4, - tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, - tag_2_1,tag_2_2,tag_2_3,tag_2_4, - tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<25;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_lable_led2_package_t jt_lable_led2_package ={ - .len1=0x0000, - .len2=24, - .tag1=ntohl(tag_1), - .tag1_lable1=tag_1_lable1, - .tag1_lable2=ntohs(tag_1_lable2), - .tag1_lable3=ntohl(tag_1_lable3), - .tag2=ntohl(tag_2), - .tag2_lable1=tag_2_lable1, - .tag2_lable2=ntohs(tag_2_lable2), - .tag2_lable3=ntohl(tag_2_lable3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_lable_led2_package) == write(uart->uart_fd, &jt_lable_led2_package, sizeof(jt_lable_led2_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==3){ - uint8_t test1[36] = {0x00,0x00,35,tag_1_1,tag_1_2,tag_1_3,tag_1_4, - tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, - tag_2_1,tag_2_2,tag_2_3,tag_2_4, - tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, - tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<36;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_lable_led3_package_t jt_lable_led3_package ={ - .len1=0x0000, - .len2=35, - .tag1=ntohl(tag_1), - .tag1_lable1=tag_1_lable1, - .tag1_lable2=ntohs(tag_1_lable2), - .tag1_lable3=ntohl(tag_1_lable3), - .tag2=ntohl(tag_2), - .tag2_lable1=tag_2_lable1, - .tag2_lable2=ntohs(tag_2_lable2), - .tag2_lable3=ntohl(tag_2_lable3), - .tag3=ntohl(tag_3), - .tag3_lable1=tag_3_lable1, - .tag3_lable2=ntohs(tag_3_lable2), - .tag3_lable3=ntohl(tag_3_lable3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_lable_led3_package) == write(uart->uart_fd, &jt_lable_led3_package, sizeof(jt_lable_led3_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==4){ - uint8_t test1[47] = {0x00,0x00,46,tag_1_1,tag_1_2,tag_1_3,tag_1_4, - tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, - tag_2_1,tag_2_2,tag_2_3,tag_2_4, - tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, - tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4, - tag_4_lable1,tag_4_lable2_1,tag_4_lable2_2,tag_4_lable3_1,tag_4_lable3_2,tag_4_lable3_3,tag_4_lable3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<47;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_lable_led4_package_t jt_lable_led4_package ={ - .len1=0x0000, - .len2=46, - .tag1=ntohl(tag_1), - .tag1_lable1=tag_1_lable1, - .tag1_lable2=ntohs(tag_1_lable2), - .tag1_lable3=ntohl(tag_1_lable3), - .tag2=ntohl(tag_2), - .tag2_lable1=tag_2_lable1, - .tag2_lable2=ntohs(tag_2_lable2), - .tag2_lable3=ntohl(tag_2_lable3), - .tag3=ntohl(tag_3), - .tag3_lable1=tag_3_lable1, - .tag3_lable2=ntohs(tag_3_lable2), - .tag3_lable3=ntohl(tag_3_lable3), - .tag4=ntohl(tag_4), - .tag4_lable1=tag_4_lable1, - .tag4_lable2=ntohs(tag_4_lable2), - .tag4_lable3=ntohl(tag_4_lable3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_lable_led4_package) == write(uart->uart_fd, &jt_lable_led4_package, sizeof(jt_lable_led4_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==5){ - uint8_t test1[58] = {0x00,0x00,57,tag_1_1,tag_1_2,tag_1_3,tag_1_4, - tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, - tag_2_1,tag_2_2,tag_2_3,tag_2_4, - tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, - tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4, - tag_4_lable1,tag_4_lable2_1,tag_4_lable2_2,tag_4_lable3_1,tag_4_lable3_2,tag_4_lable3_3,tag_4_lable3_4, - tag_5_1,tag_5_2,tag_5_3,tag_5_4, - tag_5_lable1,tag_5_lable2_1,tag_5_lable2_2,tag_5_lable3_1,tag_5_lable3_2,tag_5_lable3_3,tag_5_lable3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<58;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_lable_led5_package_t jt_lable_led5_package ={ - .len1=0x0000, - .len2=57, - .tag1=ntohl(tag_1), - .tag1_lable1=tag_1_lable1, - .tag1_lable2=ntohs(tag_1_lable2), - .tag1_lable3=ntohl(tag_1_lable3), - .tag2=ntohl(tag_2), - .tag2_lable1=tag_2_lable1, - .tag2_lable2=ntohs(tag_2_lable2), - .tag2_lable3=ntohl(tag_2_lable3), - .tag3=ntohl(tag_3), - .tag3_lable1=tag_3_lable1, - .tag3_lable2=ntohs(tag_3_lable2), - .tag3_lable3=ntohl(tag_3_lable3), - .tag4=ntohl(tag_4), - .tag4_lable1=tag_4_lable1, - .tag4_lable2=ntohs(tag_4_lable2), - .tag4_lable3=ntohl(tag_4_lable3), - .tag5=ntohl(tag_5), - .tag5_lable1=tag_5_lable1, - .tag5_lable2=ntohs(tag_5_lable2), - .tag5_lable3=ntohl(tag_5_lable3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_lable_led5_package) == write(uart->uart_fd, &jt_lable_led5_package, sizeof(jt_lable_led5_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - } -error: - return ret; - return 0; -} - -int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,uint16_t light_d, - uint32_t tag_1,uint32_t tag_2,uint32_t tag_3,uint32_t tag_4,uint32_t tag_5,uint32_t tag_num){ - int ret = 0; - if (uart == NULL){ - LOG_I("uart NULL pointer\n"); - ret = -1; - goto error; - } - - uint8_t flash_i_h=(flash_i>>8)&0xFF; - uint8_t flash_i_l=(flash_i)&0xFF; - - uint8_t light_d_h=(light_d>>8)&0xFF; - uint8_t light_d_l=(light_d)&0xFF; - - uint8_t tag_1_1=(tag_1>>24)&0xFF; - uint8_t tag_1_2=(tag_1>>16)&0xFF; - uint8_t tag_1_3=(tag_1>>8)&0xFF; - uint8_t tag_1_4=(tag_1)&0xFF; - - uint8_t tag_2_1=(tag_2>>24)&0xFF; - uint8_t tag_2_2=(tag_2>>16)&0xFF; - uint8_t tag_2_3=(tag_2>>8)&0xFF; - uint8_t tag_2_4=(tag_2)&0xFF; - - uint8_t tag_3_1=(tag_3>>24)&0xFF; - uint8_t tag_3_2=(tag_3>>16)&0xFF; - uint8_t tag_3_3=(tag_3>>8)&0xFF; - uint8_t tag_3_4=(tag_3)&0xFF; - - uint8_t tag_4_1=(tag_4>>24)&0xFF; - uint8_t tag_4_2=(tag_4>>16)&0xFF; - uint8_t tag_4_3=(tag_4>>8)&0xFF; - uint8_t tag_4_4=(tag_4)&0xFF; - - uint8_t tag_5_1=(tag_5>>24)&0xFF; - uint8_t tag_5_2=(tag_5>>16)&0xFF; - uint8_t tag_5_3=(tag_5>>8)&0xFF; - uint8_t tag_5_4=(tag_5)&0xFF; -#if 0 - LOG_I("ledctl = %02x\r\n",ledctl); - LOG_I("flash_i_h = %02x\r\n",flash_i_h); - LOG_I("flash_i_l = %02x\r\n",flash_i_l); - LOG_I("light_d_h = %02x\r\n",light_d_h); - LOG_I("light_d_l = %02x\r\n",light_d_l); - LOG_I("tag_1_1 = %02x\r\n",tag_1_1); - LOG_I("tag_1_2 = %02x\r\n",tag_1_2); - LOG_I("tag_1_3 = %02x\r\n",tag_1_3); - LOG_I("tag_1_4 = %02x\r\n",tag_1_4); - LOG_I("tag_2_1 = %02x\r\n",tag_2_1); - LOG_I("tag_2_2 = %02x\r\n",tag_2_2); - LOG_I("tag_2_3 = %02x\r\n",tag_2_3); - LOG_I("tag_2_4 = %02x\r\n",tag_2_4); - LOG_I("tag_3_1 = %02x\r\n",tag_3_1); - LOG_I("tag_3_2 = %02x\r\n",tag_3_2); - LOG_I("tag_3_3 = %02x\r\n",tag_3_3); - LOG_I("tag_3_4 = %02x\r\n",tag_3_4); - LOG_I("tag_4_1 = %02x\r\n",tag_4_1); - LOG_I("tag_4_2 = %02x\r\n",tag_4_2); - LOG_I("tag_4_3 = %02x\r\n",tag_4_3); - LOG_I("tag_4_4 = %02x\r\n",tag_4_4); - LOG_I("tag_5_1 = %02x\r\n",tag_5_1); - LOG_I("tag_5_2 = %02x\r\n",tag_5_2); - LOG_I("tag_5_3 = %02x\r\n",tag_5_3); - LOG_I("tag_5_4 = %02x\r\n",tag_5_4); -#endif - if(tag_num==1){ - uint8_t test1[12] = {0x00,0x00,11,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<12;i++){ - printf("%02x ",test1[i]); + uint8_t crc_data[9] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led1_package, sizeof(jt_light_led1_package))){ @@ -640,28 +137,23 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui goto error; } }else if(tag_num==2){ - uint8_t test1[16] = {0x00,0x00,15,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<16;i++){ - printf("%02x ",test1[i]); + uint8_t crc_data[13] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led2_package, sizeof(jt_light_led2_package))){ ret = 0; //LOG_I("%s success\n",__func__); @@ -671,23 +163,23 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui goto error; } }else if(tag_num==3){ - uint8_t test1[20] = {0x00,0x00,19,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<20;i++){ - printf("%02x ",test1[i]); + uint8_t crc_data[17] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led3_package, sizeof(jt_light_led3_package))){ @@ -699,25 +191,25 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui goto error; } }else if(tag_num==4){ - uint8_t test1[24] = {0x00,0x00,23,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<24;i++){ - printf("%02x ",test1[i]); + uint8_t crc_data[21] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led4_package, sizeof(jt_light_led4_package))){ @@ -729,26 +221,27 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui goto error; } }else if(tag_num==5){ - uint8_t test1[28] = {0x00,0x00,27,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4,tag_5_1,tag_5_2,tag_5_3,tag_5_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<28;i++){ - printf("%02x ",test1[i]); + uint8_t crc_data[25] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led5_package, sizeof(jt_light_led5_package))){ @@ -759,6 +252,3127 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui ret = -2; goto error; } + }else if(tag_num==6){ + uint8_t crc_data[29] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led6_package, sizeof(jt_light_led6_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==7){ + uint8_t crc_data[33] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led7_package, sizeof(jt_light_led7_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==8){ + uint8_t crc_data[37] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led8_package, sizeof(jt_light_led8_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==9){ + uint8_t crc_data[41] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led9_package, sizeof(jt_light_led9_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==10){ + uint8_t crc_data[45] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led10_package, sizeof(jt_light_led10_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==11){ + uint8_t crc_data[49] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led11_package, sizeof(jt_light_led11_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==12){ + uint8_t crc_data[53] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led12_package, sizeof(jt_light_led12_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==13){ + uint8_t crc_data[57] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led13_package, sizeof(jt_light_led13_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==14){ + uint8_t crc_data[61] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led14_package, sizeof(jt_light_led14_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==15){ + uint8_t crc_data[65] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led15_package, sizeof(jt_light_led15_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==16){ + uint8_t crc_data[69] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led16_package, sizeof(jt_light_led16_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==17){ + uint8_t crc_data[73] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led17_package, sizeof(jt_light_led17_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==18){ + uint8_t crc_data[77] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led18_package, sizeof(jt_light_led18_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==19){ + uint8_t crc_data[81] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led19_package, sizeof(jt_light_led19_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==20){ + uint8_t crc_data[85] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led20_package, sizeof(jt_light_led20_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==21){ + uint8_t crc_data[89] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led21_package, sizeof(jt_light_led21_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==22){ + uint8_t crc_data[93] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led22_package, sizeof(jt_light_led22_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==23){ + uint8_t crc_data[97] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led23_package, sizeof(jt_light_led23_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==24){ + uint8_t crc_data[101] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led24_package, sizeof(jt_light_led24_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==25){ + uint8_t crc_data[105] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led25_package, sizeof(jt_light_led25_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==26){ + uint8_t crc_data[109] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group, + tags[25].tag_1,tags[25].tag_2,tags[25].tag_3,tags[25].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led26_package, sizeof(jt_light_led26_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==27){ + uint8_t crc_data[113] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group, + tags[25].tag_1,tags[25].tag_2,tags[25].tag_3,tags[25].tag_led_or_group.group, + tags[26].tag_1,tags[26].tag_2,tags[26].tag_3,tags[26].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led27_package, sizeof(jt_light_led27_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==28){ + uint8_t crc_data[117] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group, + tags[25].tag_1,tags[25].tag_2,tags[25].tag_3,tags[25].tag_led_or_group.group, + tags[26].tag_1,tags[26].tag_2,tags[26].tag_3,tags[26].tag_led_or_group.group, + tags[27].tag_1,tags[27].tag_2,tags[27].tag_3,tags[27].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led28_package, sizeof(jt_light_led28_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==29){ + uint8_t crc_data[121] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group, + tags[25].tag_1,tags[25].tag_2,tags[25].tag_3,tags[25].tag_led_or_group.group, + tags[26].tag_1,tags[26].tag_2,tags[26].tag_3,tags[26].tag_led_or_group.group, + tags[27].tag_1,tags[27].tag_2,tags[27].tag_3,tags[27].tag_led_or_group.group, + tags[28].tag_1,tags[28].tag_2,tags[28].tag_3,tags[28].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led29_package, sizeof(jt_light_led29_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==30){ + uint8_t crc_data[125] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + tags[0].tag_1,tags[0].tag_2,tags[0].tag_3,tags[0].tag_led_or_group.group, + tags[1].tag_1,tags[1].tag_2,tags[1].tag_3,tags[1].tag_led_or_group.group, + tags[2].tag_1,tags[2].tag_2,tags[2].tag_3,tags[2].tag_led_or_group.group, + tags[3].tag_1,tags[3].tag_2,tags[3].tag_3,tags[3].tag_led_or_group.group, + tags[4].tag_1,tags[4].tag_2,tags[4].tag_3,tags[4].tag_led_or_group.group, + tags[5].tag_1,tags[5].tag_2,tags[5].tag_3,tags[5].tag_led_or_group.group, + tags[6].tag_1,tags[6].tag_2,tags[6].tag_3,tags[6].tag_led_or_group.group, + tags[7].tag_1,tags[7].tag_2,tags[7].tag_3,tags[7].tag_led_or_group.group, + tags[8].tag_1,tags[8].tag_2,tags[8].tag_3,tags[8].tag_led_or_group.group, + tags[9].tag_1,tags[9].tag_2,tags[9].tag_3,tags[9].tag_led_or_group.group, + tags[10].tag_1,tags[10].tag_2,tags[10].tag_3,tags[10].tag_led_or_group.group, + tags[11].tag_1,tags[11].tag_2,tags[11].tag_3,tags[11].tag_led_or_group.group, + tags[12].tag_1,tags[12].tag_2,tags[12].tag_3,tags[12].tag_led_or_group.group, + tags[13].tag_1,tags[13].tag_2,tags[13].tag_3,tags[13].tag_led_or_group.group, + tags[14].tag_1,tags[14].tag_2,tags[14].tag_3,tags[14].tag_led_or_group.group, + tags[15].tag_1,tags[15].tag_2,tags[15].tag_3,tags[15].tag_led_or_group.group, + tags[16].tag_1,tags[16].tag_2,tags[16].tag_3,tags[16].tag_led_or_group.group, + tags[17].tag_1,tags[17].tag_2,tags[17].tag_3,tags[17].tag_led_or_group.group, + tags[18].tag_1,tags[18].tag_2,tags[18].tag_3,tags[18].tag_led_or_group.group, + tags[19].tag_1,tags[19].tag_2,tags[19].tag_3,tags[19].tag_led_or_group.group, + tags[20].tag_1,tags[20].tag_2,tags[20].tag_3,tags[20].tag_led_or_group.group, + tags[21].tag_1,tags[21].tag_2,tags[21].tag_3,tags[21].tag_led_or_group.group, + tags[22].tag_1,tags[22].tag_2,tags[22].tag_3,tags[22].tag_led_or_group.group, + tags[23].tag_1,tags[23].tag_2,tags[23].tag_3,tags[23].tag_led_or_group.group, + tags[24].tag_1,tags[24].tag_2,tags[24].tag_3,tags[24].tag_led_or_group.group, + tags[25].tag_1,tags[25].tag_2,tags[25].tag_3,tags[25].tag_led_or_group.group, + tags[26].tag_1,tags[26].tag_2,tags[26].tag_3,tags[26].tag_led_or_group.group, + tags[27].tag_1,tags[27].tag_2,tags[27].tag_3,tags[27].tag_led_or_group.group, + tags[28].tag_1,tags[28].tag_2,tags[28].tag_3,tags[28].tag_led_or_group.group, + tags[29].tag_1,tags[29].tag_2,tags[29].tag_3,tags[29].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_light_led30_package, sizeof(jt_light_led30_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + } + +error: + return ret; + return 0; +} + +int uart_data_send_lighton_by_group(uart_utils_t *uart,jt_group_package_t groups[],uint8_t tag_num){ + int ret = 0; + if (uart == NULL){ + LOG_I("uart NULL pointer\n"); + ret = -1; + goto error; + } + + uint16_t tags_len2=(tag_num*2+4)*2; + uint16_t custom_code=0x0001; + uint8_t tags_len2_1=(tags_len2>>8)&0xFF; + uint8_t tags_len2_2=(tags_len2)&0xFF; + uint8_t custom_code_1=(custom_code>>8)&0xFF; + uint8_t custom_code_2=(custom_code)&0xFF; + + if(tag_num==1){ + uint8_t crc_data[7] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group1_package, sizeof(jt_group1_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==2){ + uint8_t crc_data[9] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group2_package, sizeof(jt_group2_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==3){ + uint8_t crc_data[11] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group3_package, sizeof(jt_group3_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==4){ + uint8_t crc_data[13] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group4_package, sizeof(jt_group4_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==5){ + uint8_t crc_data[15] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group5_package, sizeof(jt_group5_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==6){ + uint8_t crc_data[17] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group6_package, sizeof(jt_group6_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==7){ + uint8_t crc_data[19] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group7_package, sizeof(jt_group7_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==8){ + uint8_t crc_data[21] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group8_package, sizeof(jt_group8_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==9){ + uint8_t crc_data[23] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group9_package, sizeof(jt_group9_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==10){ + uint8_t crc_data[25] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group10_package, sizeof(jt_group10_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==11){ + uint8_t crc_data[27] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group11_package, sizeof(jt_group11_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==12){ + uint8_t crc_data[29] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group12_package, sizeof(jt_group12_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==13){ + uint8_t crc_data[31] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group13_package, sizeof(jt_group13_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==14){ + uint8_t crc_data[33] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group14_package, sizeof(jt_group14_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==15){ + uint8_t crc_data[35] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group15_package, sizeof(jt_group15_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==16){ + uint8_t crc_data[37] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group16_package, sizeof(jt_group16_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==17){ + uint8_t crc_data[39] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group17_package, sizeof(jt_group17_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==18){ + uint8_t crc_data[41] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group18_package, sizeof(jt_group18_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==19){ + uint8_t crc_data[43] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group19_package, sizeof(jt_group19_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==20){ + uint8_t crc_data[45] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group20_package, sizeof(jt_group20_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==21){ + uint8_t crc_data[47] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group21_package, sizeof(jt_group21_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==22){ + uint8_t crc_data[49] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group22_package, sizeof(jt_group22_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==23){ + uint8_t crc_data[51] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group23_package, sizeof(jt_group23_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==24){ + uint8_t crc_data[53] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group24_package, sizeof(jt_group24_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==25){ + uint8_t crc_data[55] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group25_package, sizeof(jt_group25_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==26){ + uint8_t crc_data[57] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group, + groups[25].group,groups[25].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group26_package, sizeof(jt_group26_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==27){ + uint8_t crc_data[59] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group, + groups[25].group,groups[25].tag_led_or_group.group, + groups[26].group,groups[26].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group27_package, sizeof(jt_group27_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==28){ + uint8_t crc_data[61] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group, + groups[25].group,groups[25].tag_led_or_group.group, + groups[26].group,groups[26].tag_led_or_group.group, + groups[27].group,groups[27].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group28_package, sizeof(jt_group28_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==29){ + uint8_t crc_data[63] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group, + groups[25].group,groups[25].tag_led_or_group.group, + groups[26].group,groups[26].tag_led_or_group.group, + groups[27].group,groups[27].tag_led_or_group.group, + groups[28].group,groups[28].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group29_package, sizeof(jt_group29_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + }else if(tag_num==30){ + uint8_t crc_data[65] = {0x00,tags_len2_1,tags_len2_2,custom_code_1,custom_code_2, + groups[0].group,groups[0].tag_led_or_group.group, + groups[1].group,groups[1].tag_led_or_group.group, + groups[2].group,groups[2].tag_led_or_group.group, + groups[3].group,groups[3].tag_led_or_group.group, + groups[4].group,groups[4].tag_led_or_group.group, + groups[5].group,groups[5].tag_led_or_group.group, + groups[6].group,groups[6].tag_led_or_group.group, + groups[7].group,groups[7].tag_led_or_group.group, + groups[8].group,groups[8].tag_led_or_group.group, + groups[9].group,groups[9].tag_led_or_group.group, + groups[10].group,groups[10].tag_led_or_group.group, + groups[11].group,groups[11].tag_led_or_group.group, + groups[12].group,groups[12].tag_led_or_group.group, + groups[13].group,groups[13].tag_led_or_group.group, + groups[14].group,groups[14].tag_led_or_group.group, + groups[15].group,groups[15].tag_led_or_group.group, + groups[16].group,groups[16].tag_led_or_group.group, + groups[17].group,groups[17].tag_led_or_group.group, + groups[18].group,groups[18].tag_led_or_group.group, + groups[19].group,groups[19].tag_led_or_group.group, + groups[20].group,groups[20].tag_led_or_group.group, + groups[21].group,groups[21].tag_led_or_group.group, + groups[22].group,groups[22].tag_led_or_group.group, + groups[23].group,groups[23].tag_led_or_group.group, + groups[24].group,groups[24].tag_led_or_group.group, + groups[25].group,groups[25].tag_led_or_group.group, + groups[26].group,groups[26].tag_led_or_group.group, + groups[27].group,groups[27].tag_led_or_group.group, + groups[28].group,groups[28].tag_led_or_group.group, + groups[29].group,groups[29].tag_led_or_group.group}; + uint16_t crc_c=CRC16_XMODEM(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_group30_package, sizeof(jt_group30_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; + } + } +error: + return ret; + return 0; +} + +int uart_data_send_lighton_by_id(uart_utils_t *uart,uint8_t bind_start,uint8_t bind_end, + uint32_t id_start,uint32_t id_end,jt_led_or_group_package_t led_ctrl,uint16_t reserve){ + int ret = 0; + if (uart == NULL){ + LOG_I("uart NULL pointer\n"); + ret = -1; + goto error; + } + + uint16_t custom_code=0x0001; + uint8_t custom_code_1=(custom_code>>8)&0xFF; + uint8_t custom_code_2=(custom_code)&0xFF; + + uint8_t id_start_1=(id_start>>24)&0xFF; + uint8_t id_start_2=(id_start>>16)&0xFF; + uint8_t id_start_3=(id_start>>8)&0xFF; + uint8_t id_start_4=(id_start)&0xFF; + + uint8_t id_end_1=(id_end>>24)&0xFF; + uint8_t id_end_2=(id_end>>16)&0xFF; + uint8_t id_end_3=(id_end>>8)&0xFF; + uint8_t id_end_4=(id_end)&0xFF; + + uint8_t reserve_1=(reserve>>8)&0xFF; + uint8_t reserve_2=(reserve)&0xFF; + + uint8_t crc_data[17] = {0x14,custom_code_1,custom_code_2,0xFF,bind_start,bind_end,id_start_1,id_start_2,id_start_3,id_start_4, + id_end_1,id_end_2,id_end_3,id_end_4,led_ctrl.group,reserve_1,reserve_2}; + uint32_t crc_c=CRC32_DIRECT(crc_data,sizeof(crc_data)); + for(int i=0;iuart_fd, &jt_id_package, sizeof(jt_id_package))){ + ret = 0; + //LOG_I("%s success\n",__func__); + }else{ + //LOG_I("%s fail\n", __func__); + ret = -2; + goto error; } error: @@ -789,9 +3403,24 @@ int uart_data_receive_ack(uart_utils_t *uart,uint16_t *parm_ack){ return ret; } -int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint32_t *tagCode,uint8_t *tagSignal, - uint8_t *totalLen,uint8_t *tagFeature,uint8_t *count,uint16_t *batteryV,uint16_t *version,uint8_t *ledCtrl, - uint8_t *lable1,uint16_t *lable2,uint32_t *lable3){ +int uart_data_receive_version(uart_utils_t *uart){ + int ret = 0; + jt_receive_version_package_t jt_receive_version_package; + ret = uart_read_until_time(uart->uart_fd,(char *)&jt_receive_version_package,sizeof(jt_receive_version_package_t), 1000, 50); + if(ret == sizeof(jt_receive_version_package_t)){ + LOG_I("%s success:%04x,%04x\n", __func__,jt_receive_version_package.v1,jt_receive_version_package.v2); + }else{ + LOG_I("%s, failed, time out\n", __func__); + ret = -1; + } + + return ret; +} + + +int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint16_t *tagCodeHead,uint32_t *tagCode,uint8_t *tagSignal, + uint8_t *totalLen,uint8_t *tagFeature,uint8_t *count,uint8_t *batteryV,uint16_t *version,uint8_t *ledCtrl, + uint16_t *signCode,uint16_t *reserve,uint32_t *lableParm){ int ret = 0; jt_data_back_package_t jt_data_back_package; ret = uart_read_until_time(uart->uart_fd,(char *)&jt_data_back_package,sizeof(jt_data_back_package_t), 1000, 50); @@ -800,26 +3429,21 @@ int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint32_t *t if((jt_data_back_package.pre1 == 0x2424) &&(jt_data_back_package.pre2 == 0x2424) &&(jt_data_back_package.pre3 == 0x2424)){ - uint8_t pre4_1=(jt_data_back_package.pre4>>8)&0xFF; - uint8_t pre4_2=(jt_data_back_package.pre4)&0xFF; - uint8_t tagCode_1=(ntohl(jt_data_back_package.tag)>>24)&0xFF; - uint8_t tagCode_2=(ntohl(jt_data_back_package.tag)>>16)&0xFF; - uint8_t tagCode_3=(ntohl(jt_data_back_package.tag)>>8)&0xFF; - uint8_t tagCode_4=(ntohl(jt_data_back_package.tag))&0xFF; - uint8_t battery_1=(ntohs(jt_data_back_package.battery)>>8)&0xFF; - uint8_t battery_2=(ntohs(jt_data_back_package.battery))&0xFF; uint8_t version_1=(ntohs(jt_data_back_package.version)>>8)&0xFF; uint8_t version_2=(ntohs(jt_data_back_package.version))&0xFF; - uint8_t lable2_1=(ntohs(jt_data_back_package.lable2)>>8)&0xFF; - uint8_t lable2_2=(ntohs(jt_data_back_package.lable2))&0xFF; - uint8_t lable3_1=(ntohl(jt_data_back_package.lable3)>>24)&0xFF; - uint8_t lable3_2=(ntohl(jt_data_back_package.lable3)>>16)&0xFF; - uint8_t lable3_3=(ntohl(jt_data_back_package.lable3)>>8)&0xFF; - uint8_t lable3_4=(ntohl(jt_data_back_package.lable3))&0xFF; + uint8_t signCode_1=(ntohs(jt_data_back_package.signCode)>>8)&0xFF; + uint8_t signCode_2=(ntohs(jt_data_back_package.signCode))&0xFF; + uint8_t reserve_1=(ntohs(jt_data_back_package.reserve)>>8)&0xFF; + uint8_t reserve_2=(ntohs(jt_data_back_package.reserve))&0xFF; + uint8_t lableParm_1=(ntohl(jt_data_back_package.lableParm)>>24)&0xFF; + uint8_t lableParm_2=(ntohl(jt_data_back_package.lableParm)>>16)&0xFF; + uint8_t lableParm_3=(ntohl(jt_data_back_package.lableParm)>>8)&0xFF; + uint8_t lableParm_4=(ntohl(jt_data_back_package.lableParm))&0xFF; uint8_t test1[15] = {jt_data_back_package.len,jt_data_back_package.featureCode, - jt_data_back_package.count,battery_1,battery_2,version_1,version_2,jt_data_back_package.ledCtrl, - jt_data_back_package.lable1,lable2_1,lable2_2,lable3_1,lable3_2,lable3_3,lable3_4}; + jt_data_back_package.count,jt_data_back_package.battery,version_1,version_2, + jt_data_back_package.ledCtrl,signCode_1,signCode_2,reserve_1,reserve_2, + lableParm_1,lableParm_2,lableParm_3,lableParm_4}; uint16_t crc_c=CRC16_XMODEM(test1,15); //for(int i=0;i<15;i++){ // printf("%02x ",test1[i]); @@ -828,17 +3452,18 @@ int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint32_t *t //LOG_I("CRC = %04x\r\n",ntohs(jt_data_back_package.crc)); *parmAck=ntohs(jt_data_back_package.pre4); + *tagCodeHead=ntohs(jt_data_back_package.tagHead); *tagCode=ntohl(jt_data_back_package.tag); *tagSignal=jt_data_back_package.signal; *totalLen=jt_data_back_package.len; *tagFeature=jt_data_back_package.featureCode; *count=jt_data_back_package.count; - *batteryV=ntohs(jt_data_back_package.battery); + *batteryV=jt_data_back_package.battery; *version=ntohs(jt_data_back_package.version); *ledCtrl=jt_data_back_package.ledCtrl; - *lable1=jt_data_back_package.lable1; - *lable2=ntohs(jt_data_back_package.lable2); - *lable3=ntohl(jt_data_back_package.lable3); + *signCode=ntohs(jt_data_back_package.signCode); + *reserve=ntohs(jt_data_back_package.reserve); + *lableParm=ntohl(jt_data_back_package.lableParm); }else{ // LOG_I("%s failed\n", __func__); ret = -2; diff --git a/uart_can/uart_can.h b/uart_can/uart_can.h index bef5c73..cd7546b 100644 --- a/uart_can/uart_can.h +++ b/uart_can/uart_can.h @@ -19,6 +19,30 @@ typedef struct{ int uart_can_data_receive(uart_utils_t *uart,int timeout,uint8_t *cabinet_can_id,uint8_t *board_can_id,uint8_t *index,char data[7]); int uart_can_data_send(uart_utils_t *uart,uint8_t cabinet_can_id,uint8_t board_can_id,uint8_t index,uint8_t data[]); #endif +typedef union +{ + struct{ + uint8_t color:3; + uint8_t sound:1; + uint8_t single:2; + uint8_t flash:2; + }s; + uint8_t group; +}__attribute__((packed)) jt_led_or_group_package_t; + +typedef struct +{ + uint8_t tag_1; + uint8_t tag_2; + uint8_t tag_3; + jt_led_or_group_package_t tag_led_or_group; +}__attribute__((packed)) jt_tag_package_t; + +typedef struct +{ + uint8_t group; + jt_led_or_group_package_t tag_led_or_group; +}__attribute__((packed)) jt_group_package_t; typedef struct { @@ -27,78 +51,1381 @@ typedef struct uint8_t func; uint16_t len1; uint8_t len2; - uint16_t reserve; + uint8_t timeout; + uint8_t reserve; uint16_t lableNum; }__attribute__((packed)) jt_head_package_t; -typedef union -{ - struct{ - uint8_t color:4; - uint8_t sound:2; - uint8_t flash:2; - }s; - uint8_t ch; -}__attribute__((packed)) jt_ledctrl_package_t; + typedef struct { - uint16_t len1; - uint8_t len2; - uint8_t ledCtr; - uint16_t flashInterval; - uint16_t lightDuration; - uint32_t tag1; + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + uint16_t crc; +}__attribute__((packed)) jt_group1_package_t; + +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + uint16_t crc; +}__attribute__((packed)) jt_group2_package_t; + +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + uint16_t crc; +}__attribute__((packed)) jt_group3_package_t; + +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + uint16_t crc; +}__attribute__((packed)) jt_group4_package_t; + +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + uint16_t crc; +}__attribute__((packed)) jt_group5_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + uint16_t crc; +}__attribute__((packed)) jt_group6_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + uint16_t crc; +}__attribute__((packed)) jt_group7_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + uint16_t crc; +}__attribute__((packed)) jt_group8_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + uint16_t crc; +}__attribute__((packed)) jt_group9_package_t; + +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + uint16_t crc; +}__attribute__((packed)) jt_group10_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + uint16_t crc; +}__attribute__((packed)) jt_group11_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + uint16_t crc; +}__attribute__((packed)) jt_group12_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + uint16_t crc; +}__attribute__((packed)) jt_group13_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + uint16_t crc; +}__attribute__((packed)) jt_group14_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + uint16_t crc; +}__attribute__((packed)) jt_group15_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + uint16_t crc; +}__attribute__((packed)) jt_group16_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + uint16_t crc; +}__attribute__((packed)) jt_group17_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + uint16_t crc; +}__attribute__((packed)) jt_group18_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + uint16_t crc; +}__attribute__((packed)) jt_group19_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + uint16_t crc; +}__attribute__((packed)) jt_group20_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + uint16_t crc; +}__attribute__((packed)) jt_group21_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + uint16_t crc; +}__attribute__((packed)) jt_group22_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + uint16_t crc; +}__attribute__((packed)) jt_group23_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + uint16_t crc; +}__attribute__((packed)) jt_group24_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + uint16_t crc; +}__attribute__((packed)) jt_group25_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + jt_group_package_t group26; + uint16_t crc; +}__attribute__((packed)) jt_group26_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + jt_group_package_t group26; + jt_group_package_t group27; + uint16_t crc; +}__attribute__((packed)) jt_group27_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + jt_group_package_t group26; + jt_group_package_t group27; + jt_group_package_t group28; + uint16_t crc; +}__attribute__((packed)) jt_group28_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + jt_group_package_t group26; + jt_group_package_t group27; + jt_group_package_t group28; + jt_group_package_t group29; + uint16_t crc; +}__attribute__((packed)) jt_group29_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_group_package_t group1; + jt_group_package_t group2; + jt_group_package_t group3; + jt_group_package_t group4; + jt_group_package_t group5; + jt_group_package_t group6; + jt_group_package_t group7; + jt_group_package_t group8; + jt_group_package_t group9; + jt_group_package_t group10; + jt_group_package_t group11; + jt_group_package_t group12; + jt_group_package_t group13; + jt_group_package_t group14; + jt_group_package_t group15; + jt_group_package_t group16; + jt_group_package_t group17; + jt_group_package_t group18; + jt_group_package_t group19; + jt_group_package_t group20; + jt_group_package_t group21; + jt_group_package_t group22; + jt_group_package_t group23; + jt_group_package_t group24; + jt_group_package_t group25; + jt_group_package_t group26; + jt_group_package_t group27; + jt_group_package_t group28; + jt_group_package_t group29; + jt_group_package_t group30; + uint16_t crc; +}__attribute__((packed)) jt_group30_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; uint16_t crc; }__attribute__((packed)) jt_light_led1_package_t; typedef struct { - uint16_t len1; - uint8_t len2; - uint8_t ledCtr; - uint16_t flashInterval; - uint16_t lightDuration; - uint32_t tag1; - uint32_t tag2; + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; uint16_t crc; }__attribute__((packed)) jt_light_led2_package_t; typedef struct { - uint16_t len1; - uint8_t len2; - uint8_t ledCtr; - uint16_t flashInterval; - uint16_t lightDuration; - uint32_t tag1; - uint32_t tag2; - uint32_t tag3; + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; uint16_t crc; }__attribute__((packed)) jt_light_led3_package_t; typedef struct { - uint16_t len1; - uint8_t len2; - uint8_t ledCtr; - uint16_t flashInterval; - uint16_t lightDuration; - uint32_t tag1; - uint32_t tag2; - uint32_t tag3; - uint32_t tag4; + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; uint16_t crc; }__attribute__((packed)) jt_light_led4_package_t; typedef struct { - uint16_t len1; - uint8_t len2; - uint8_t ledCtr; - uint16_t flashInterval; - uint16_t lightDuration; - uint32_t tag1; - uint32_t tag2; - uint32_t tag3; - uint32_t tag4; - uint32_t tag5; + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; uint16_t crc; }__attribute__((packed)) jt_light_led5_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + uint16_t crc; +}__attribute__((packed)) jt_light_led6_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + uint16_t crc; +}__attribute__((packed)) jt_light_led7_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + uint16_t crc; +}__attribute__((packed)) jt_light_led8_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + uint16_t crc; +}__attribute__((packed)) jt_light_led9_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + uint16_t crc; +}__attribute__((packed)) jt_light_led10_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + uint16_t crc; +}__attribute__((packed)) jt_light_led11_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + uint16_t crc; +}__attribute__((packed)) jt_light_led12_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + uint16_t crc; +}__attribute__((packed)) jt_light_led13_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + uint16_t crc; +}__attribute__((packed)) jt_light_led14_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + uint16_t crc; +}__attribute__((packed)) jt_light_led15_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + uint16_t crc; +}__attribute__((packed)) jt_light_led16_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + uint16_t crc; +}__attribute__((packed)) jt_light_led17_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + uint16_t crc; +}__attribute__((packed)) jt_light_led18_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + uint16_t crc; +}__attribute__((packed)) jt_light_led19_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + uint16_t crc; +}__attribute__((packed)) jt_light_led20_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + uint16_t crc; +}__attribute__((packed)) jt_light_led21_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + uint16_t crc; +}__attribute__((packed)) jt_light_led22_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + uint16_t crc; +}__attribute__((packed)) jt_light_led23_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + uint16_t crc; +}__attribute__((packed)) jt_light_led24_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + uint16_t crc; +}__attribute__((packed)) jt_light_led25_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + jt_tag_package_t tag26; + uint16_t crc; +}__attribute__((packed)) jt_light_led26_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + jt_tag_package_t tag26; + jt_tag_package_t tag27; + uint16_t crc; +}__attribute__((packed)) jt_light_led27_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + jt_tag_package_t tag26; + jt_tag_package_t tag27; + jt_tag_package_t tag28; + uint16_t crc; +}__attribute__((packed)) jt_light_led28_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + jt_tag_package_t tag26; + jt_tag_package_t tag27; + jt_tag_package_t tag28; + jt_tag_package_t tag29; + uint16_t crc; +}__attribute__((packed)) jt_light_led29_package_t; +typedef struct +{ + uint8_t len1; + uint16_t len2; + uint16_t customCode; + jt_tag_package_t tag1; + jt_tag_package_t tag2; + jt_tag_package_t tag3; + jt_tag_package_t tag4; + jt_tag_package_t tag5; + jt_tag_package_t tag6; + jt_tag_package_t tag7; + jt_tag_package_t tag8; + jt_tag_package_t tag9; + jt_tag_package_t tag10; + jt_tag_package_t tag11; + jt_tag_package_t tag12; + jt_tag_package_t tag13; + jt_tag_package_t tag14; + jt_tag_package_t tag15; + jt_tag_package_t tag16; + jt_tag_package_t tag17; + jt_tag_package_t tag18; + jt_tag_package_t tag19; + jt_tag_package_t tag20; + jt_tag_package_t tag21; + jt_tag_package_t tag22; + jt_tag_package_t tag23; + jt_tag_package_t tag24; + jt_tag_package_t tag25; + jt_tag_package_t tag26; + jt_tag_package_t tag27; + jt_tag_package_t tag28; + jt_tag_package_t tag29; + jt_tag_package_t tag30; + uint16_t crc; +}__attribute__((packed)) jt_light_led30_package_t; + +typedef struct +{ + uint8_t len; + uint16_t customCode; + uint8_t type; + uint8_t bindStart; + uint8_t bindEnd; + uint32_t idStart; + uint32_t idEnd; + jt_led_or_group_package_t ledCtrl; + uint16_t reserve; + uint32_t crc; +}__attribute__((packed)) jt_id_package_t; + typedef struct { uint16_t pre1;//$$ 0x2424 @@ -108,109 +1435,9 @@ typedef struct }__attribute__((packed)) jt_receive_package_t; typedef struct { - uint16_t len1; - uint8_t len2; - uint32_t tag1; - uint8_t tag1_lable1; - uint16_t tag1_lable2; - uint32_t tag1_lable3; - uint16_t crc; -}__attribute__((packed)) jt_lable_led1_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint32_t tag1; - uint8_t tag1_lable1; - uint16_t tag1_lable2; - uint32_t tag1_lable3; - uint32_t tag2; - uint8_t tag2_lable1; - uint16_t tag2_lable2; - uint32_t tag2_lable3; - uint16_t crc; -}__attribute__((packed)) jt_lable_led2_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint32_t tag1; - uint8_t tag1_lable1; - uint16_t tag1_lable2; - uint32_t tag1_lable3; - uint32_t tag2; - uint8_t tag2_lable1; - uint16_t tag2_lable2; - uint32_t tag2_lable3; - uint32_t tag3; - uint8_t tag3_lable1; - uint16_t tag3_lable2; - uint32_t tag3_lable3; - uint16_t crc; -}__attribute__((packed)) jt_lable_led3_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint32_t tag1; - uint8_t tag1_lable1; - uint16_t tag1_lable2; - uint32_t tag1_lable3; - uint32_t tag2; - uint8_t tag2_lable1; - uint16_t tag2_lable2; - uint32_t tag2_lable3; - uint32_t tag3; - uint8_t tag3_lable1; - uint16_t tag3_lable2; - uint32_t tag3_lable3; - uint32_t tag4; - uint8_t tag4_lable1; - uint16_t tag4_lable2; - uint32_t tag4_lable3; - uint16_t crc; -}__attribute__((packed)) jt_lable_led4_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint32_t tag1; - uint8_t tag1_lable1; - uint16_t tag1_lable2; - uint32_t tag1_lable3; - uint32_t tag2; - uint8_t tag2_lable1; - uint16_t tag2_lable2; - uint32_t tag2_lable3; - uint32_t tag3; - uint8_t tag3_lable1; - uint16_t tag3_lable2; - uint32_t tag3_lable3; - uint32_t tag4; - uint8_t tag4_lable1; - uint16_t tag4_lable2; - uint32_t tag4_lable3; - uint32_t tag5; - uint8_t tag5_lable1; - uint16_t tag5_lable2; - uint32_t tag5_lable3; - uint16_t crc; -}__attribute__((packed)) jt_lable_led5_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint8_t lable1; - uint16_t lable2; - uint32_t lable3; - uint8_t lable1_rule; - uint8_t lable2_rule; - uint8_t lable3_rule; - uint8_t ledctrl; - uint16_t flash_i; - uint16_t light_d; - uint16_t crc; -}__attribute__((packed)) jt_light_rule_package_t; + uint16_t v1; + uint16_t v2; +}__attribute__((packed)) jt_receive_version_package_t; typedef struct { uint16_t pre1; @@ -223,52 +1450,28 @@ typedef struct uint8_t len; uint8_t featureCode; uint8_t count; - uint16_t battery; + uint8_t battery; uint16_t version; uint8_t ledCtrl; - uint8_t lable1; - uint16_t lable2; - uint32_t lable3; + uint16_t signCode; + uint16_t reserve; + uint32_t lableParm; uint16_t crc; }__attribute__((packed)) jt_data_back_package_t; -typedef struct -{ - uint16_t len1; - uint8_t len2; - uint8_t lable3_1; - uint8_t lable3_2; - uint8_t lable3_3; - uint8_t lable3_4; - uint8_t lable3_5; - uint8_t lable3_6; - uint8_t lable3_7; - uint8_t lable3_8; - uint16_t crc; -}__attribute__((packed)) jt_search_package_t; + +uint32_t CRC32_DIRECT(uint8_t *data, uint32_t length); uint16_t CRC16_XMODEM(uint8_t *puchMsg, uint32_t usDataLen); -int uart_data_send_head_lighton(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num); -int uart_data_send_head_lableup(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num); -int uart_data_send_head_lightonrule(uart_utils_t *uart,uint8_t wakeup_time); -int uart_data_send_head_search(uart_utils_t *uart,uint8_t wakeup_time); +int uart_data_send_head(uart_utils_t *uart,uint8_t func,uint8_t wakeup_time,uint8_t timeout,uint16_t tag_num); -int uart_data_send_lighton(uart_utils_t *uart,uint8_t led_ctrl,uint16_t flash_i,uint16_t light_d, - uint32_t tag_1,uint32_t tag_2,uint32_t tag_3,uint32_t tag_4,uint32_t tag_5,uint32_t tag_num); -int uart_data_send_lable(uart_utils_t *uart,uint32_t tag_1,uint8_t tag_1_lable1,uint16_t tag_1_lable2,uint32_t tag_1_lable3, - uint32_t tag_2,uint8_t tag_2_lable1,uint16_t tag_2_lable2,uint32_t tag_2_lable3, - uint32_t tag_3,uint8_t tag_3_lable1,uint16_t tag_3_lable2,uint32_t tag_3_lable3, - uint32_t tag_4,uint8_t tag_4_lable1,uint16_t tag_4_lable2,uint32_t tag_4_lable3, - uint32_t tag_5,uint8_t tag_5_lable1,uint16_t tag_5_lable2,uint32_t tag_5_lable3, - uint32_t tag_num); -int uart_data_send_light_rule(uart_utils_t *uart,uint8_t lable_1,uint16_t lable_2,uint32_t lable_3, - uint8_t lable_1_rule, uint8_t lable_2_rule, uint8_t lable_3_rule, - uint8_t ledctrl, uint16_t flash_i, uint16_t light_d); -int uart_data_send_search(uart_utils_t *uart,uint8_t lable_1,uint8_t lable_2,uint8_t lable_3,uint8_t lable_4,uint8_t lable_5, - uint8_t lable_6,uint8_t lable_7,uint8_t lable_8); - -int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint32_t *tagCode,uint8_t *tagSignal, - uint8_t *totalLen,uint8_t *tagFeature,uint8_t *count,uint16_t *batteryV,uint16_t *version,uint8_t *ledCtrl, - uint8_t *lable1,uint16_t *lable2,uint32_t *lable3); +int uart_data_send_lighton_or_group(uart_utils_t *uart,jt_tag_package_t tags[],uint8_t tag_num); +int uart_data_send_lighton_by_group(uart_utils_t *uart,jt_group_package_t groups[],uint8_t tag_num); +int uart_data_send_lighton_by_id(uart_utils_t *uart,uint8_t bind_start,uint8_t bind_end, + uint32_t id_start,uint32_t id_end,jt_led_or_group_package_t led_ctrl,uint16_t reserve); +int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint16_t *tagCodeHead,uint32_t *tagCode,uint8_t *tagSignal, + uint8_t *totalLen,uint8_t *tagFeature,uint8_t *count,uint8_t *batteryV,uint16_t *version,uint8_t *ledCtrl, + uint16_t *signCode,uint16_t *reserve,uint32_t *lableParm); int uart_data_receive_ack(uart_utils_t *uart,uint16_t *parm_ack); +int uart_data_receive_version(uart_utils_t *uart); #endif