| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- --- main_b0.c 2026-01-08 15:04:01.000000000 +0800
- +++ main.c 2026-01-12 16:18:24.000000000 +0800
- @@ -20,6 +20,8 @@
- #include <stdbool.h>
- #include <wordexp.h>
-
- +#include <ctype.h>
- +
- #include <glib.h>
-
- #include "src/shared/shell.h"
- @@ -146,12 +148,30 @@
- dbus_message_iter_get_basic(&iter, &name);
- else
- name = "<unknown>";
- -
- +#if 0
- bt_shell_printf("%s%s%s-Device %s %s\n",
- description ? "[" : "",
- description ? : "",
- description ? "] " : "",
- address, name);
- +#endif
- +}
- +
- +void ble_proc(unsigned char sigType, const unsigned char *buf, size_t len, int vals)
- +{
- + if(sigType == 1){
- + printf("RSSI=%d\n", vals);
- + }else if(sigType == 2){
- + if(len == 23){
- + bt_shell_printf("=SOS key status=0x%02x\n", buf[22]);
- + if(buf[22] & 0x01){
- + printf("got a sos and bvolt=%d\n", buf[22]>>2 );
- + /**********************************************************
- + *buf[22]: bit0=sos key value; bit[7-2]/10 = battery voltage
- + **********************************************************/
- + }
- + }
- + }else;
- }
-
- static void print_fixed_iter(const char *label, const char *name,
- @@ -212,8 +232,7 @@
- return;
-
- bt_shell_printf("%s%s:\n", label, name);
- - bt_shell_hexdump((void *)byte, len * sizeof(*byte));
- -
- + ble_proc(2, (void *)byte, len * sizeof(*byte), 0);
- break;
- default:
- return;
- @@ -231,76 +250,85 @@
- const char *valstr;
- DBusMessageIter subiter;
- char *entry;
- + char des_mac[] = "F0:C9:10:01:03:E2";
-
- if (iter == NULL) {
- bt_shell_printf("%s%s is nil\n", label, name);
- return;
- }
-
- - switch (dbus_message_iter_get_arg_type(iter)) {
- - case DBUS_TYPE_INVALID:
- - bt_shell_printf("%s%s is invalid\n", label, name);
- - break;
- - case DBUS_TYPE_STRING:
- - case DBUS_TYPE_OBJECT_PATH:
- - dbus_message_iter_get_basic(iter, &valstr);
- - bt_shell_printf("%s%s: %s\n", label, name, valstr);
- - break;
- - case DBUS_TYPE_BOOLEAN:
- - dbus_message_iter_get_basic(iter, &valbool);
- - bt_shell_printf("%s%s: %s\n", label, name,
- - valbool == TRUE ? "yes" : "no");
- - break;
- - case DBUS_TYPE_UINT32:
- - dbus_message_iter_get_basic(iter, &valu32);
- - bt_shell_printf("%s%s: 0x%08x\n", label, name, valu32);
- - break;
- - case DBUS_TYPE_UINT16:
- - dbus_message_iter_get_basic(iter, &valu16);
- - bt_shell_printf("%s%s: 0x%04x\n", label, name, valu16);
- - break;
- - case DBUS_TYPE_INT16:
- - dbus_message_iter_get_basic(iter, &vals16);
- - bt_shell_printf("%s%s: %d\n", label, name, vals16);
- - break;
- - case DBUS_TYPE_BYTE:
- - dbus_message_iter_get_basic(iter, &byte);
- - bt_shell_printf("%s%s: 0x%02x (%d)\n", label, name, byte, byte);
- - break;
- - case DBUS_TYPE_VARIANT:
- - dbus_message_iter_recurse(iter, &subiter);
- - print_iter(label, name, &subiter);
- - break;
- - case DBUS_TYPE_ARRAY:
- - dbus_message_iter_recurse(iter, &subiter);
- + char* p = strstr(label, des_mac);
-
- - if (dbus_type_is_fixed(
- - dbus_message_iter_get_arg_type(&subiter))) {
- - print_fixed_iter(label, name, &subiter);
- + if( p!= NULL){
- + switch (dbus_message_iter_get_arg_type(iter)) {
- + case DBUS_TYPE_INVALID:
- + bt_shell_printf("%s%s is invalid\n", label, name);
- break;
- - }
- -
- - while (dbus_message_iter_get_arg_type(&subiter) !=
- - DBUS_TYPE_INVALID) {
- + case DBUS_TYPE_STRING:
- + case DBUS_TYPE_OBJECT_PATH:
- + dbus_message_iter_get_basic(iter, &valstr);
- + bt_shell_printf("%s%s: %s\n", label, name, valstr);
- + break;
- + case DBUS_TYPE_BOOLEAN:
- + dbus_message_iter_get_basic(iter, &valbool);
- + bt_shell_printf("%s%s: %s\n", label, name, valbool == TRUE ? "yes" : "no");
- + break;
- + case DBUS_TYPE_UINT32:
- + dbus_message_iter_get_basic(iter, &valu32);
- + bt_shell_printf("%s%s: 0x%08x\n", label, name, valu32);
- + break;
- + case DBUS_TYPE_UINT16:
- + dbus_message_iter_get_basic(iter, &valu16);
- + bt_shell_printf("%s%s: 0x%04x\n", label, name, valu16);
- + break;
- + case DBUS_TYPE_INT16:
- + dbus_message_iter_get_basic(iter, &vals16);
- + bt_shell_printf("%s%s:: %d\n", label, name, vals16);
- + /*************************************************************
- + * Received Signal Strength Indicator
- + *************************************************************/
- + if(strstr(name, "RSSI") != NULL)
- + ble_proc(1, NULL, 0, vals16);
- + break;
- + case DBUS_TYPE_BYTE:
- + dbus_message_iter_get_basic(iter, &byte);
- + bt_shell_printf("%s%s: 0x%02x (%d)\n", label, name, byte, byte);
- + break;
- + case DBUS_TYPE_VARIANT:
- + dbus_message_iter_recurse(iter, &subiter);
- print_iter(label, name, &subiter);
- + break;
- + case DBUS_TYPE_ARRAY:
- + dbus_message_iter_recurse(iter, &subiter);
- +
- + if (dbus_type_is_fixed(
- + dbus_message_iter_get_arg_type(&subiter))) {
- + print_fixed_iter(label, name, &subiter);
- + break;
- + }
- +
- + while (dbus_message_iter_get_arg_type(&subiter) !=
- + DBUS_TYPE_INVALID) {
- + print_iter(label, name, &subiter);
- + dbus_message_iter_next(&subiter);
- + }
- + break;
- + case DBUS_TYPE_DICT_ENTRY:
- + dbus_message_iter_recurse(iter, &subiter);
- + entry = g_strconcat(name, "Key", NULL);
- + print_iter(label, entry, &subiter);
- + g_free(entry);
- +
- + entry = g_strconcat(name, "Value", NULL);
- dbus_message_iter_next(&subiter);
- - }
- - break;
- - case DBUS_TYPE_DICT_ENTRY:
- - dbus_message_iter_recurse(iter, &subiter);
- - entry = g_strconcat(name, " Key", NULL);
- - print_iter(label, entry, &subiter);
- - g_free(entry);
- -
- - entry = g_strconcat(name, " Value", NULL);
- - dbus_message_iter_next(&subiter);
- - print_iter(label, entry, &subiter);
- - g_free(entry);
- - break;
- - default:
- - bt_shell_printf("%s%s has unsupported type\n", label, name);
- - break;
- - }
- + print_iter(label, entry, &subiter);
- + g_free(entry);
- + break;
- + default:
- + bt_shell_printf("%s%s has unsupported type\n", label, name);
- + break;
- + } //end of ' switch (dbus_message_iter_get_arg_type(iter)) '
- + } //end of ' if( p!= NULL) '
- }
-
- static void print_property_with_label(GDBusProxy *proxy, const char *name,
|