#ifndef BT_UART_H #define BT_UART_H /* * bt_uart — DX-BT24 Bluetooth module UART driver * * The DX-BT24 is a UART-transparent BLE module. Whatever is written to the * serial port is forwarded verbatim over BLE to the connected iOS/Android app. * * TX (Notify → app): * bt_uart_send_json(json_str) — thread-safe, non-blocking queue * * RX (Command ← app) — handled automatically by the reader thread: * {"command": "status_check"} → Notify: response_type=status_check * {"command": "get_rent_status"} → Notify: response_type=rent_status * {"command": "rent"} → status 0→1; Notify: rent_status * {"command": "return"} → status 1→0; Notify: rent_status * * Usage: * bt_uart_init("/dev/ttyS1", 0) * bt_uart_set_identity("1.0.0", "BT-24") * bt_uart_set_intervention_cb(my_fn) // optional * bt_uart_send_json(json_str) * bt_uart_close() */ /* Open UART, start TX writer + RX reader threads. * do_at_probe=1: one-time baud upgrade 9600→115200 (factory only). */ int bt_uart_init(const char *dev, int do_at_probe); /* Set firmware version and BT peripheral name broadcast in status_check replies. */ void bt_uart_set_identity(const char *aresx_version, const char *bt_name); /* Write JSON bytes to the BT module. Thread-safe. No-op if not init'd. */ void bt_uart_send_json(const char *json); /* Rent status: 0=未租借, 1=租借中, 2=管理模式. Thread-safe. */ int bt_uart_get_rent_status(void); void bt_uart_set_rent_status(int status); /* Optional callback: return 1 if cart control is currently active, else 0. * Called when building status_check responses. */ typedef int (*bt_intervention_fn)(void); void bt_uart_set_intervention_cb(bt_intervention_fn fn); /* Reset handshake and notify peer; DX-BT24 is passthrough — no HW disconnect API. */ void bt_uart_disconnect(void); /* Close the UART fd and release resources. */ void bt_uart_close(void); #endif /* BT_UART_H */