Skip to main content

aen-cc3501e-ble-gatt

Silicon proof of the CC3501E BLE GATT-server path through the portable <alp/ble.h> surface only, driven from the Alif M55-HE core on the E1M-AEN801 (Alif Ensemble E8) SoM.

The app never touches the raw bridge protocol — it exercises the same portable BLE calls a customer would write. What it proves on real silicon:

  • alp_ble_open(), alp_ble_advertise_start(), and alp_ble_gatt_register_service() are genuine over-the-bridge wire round-trips to the CC3501E's own NimBLE host;
  • alp_ble_gatt_register_service() returns ALP_OK with a non-zero attribute handle per characteristic (the CC3501E GATT encoder is real, not a stub);
  • alp_ble_gatt_read / alp_ble_gatt_write / alp_ble_gatt_notify are called with a NULL connection handle to prove the dispatch layer's connection guard rejects them with the documented status instead of crashing or hanging.

Source: examples/aen/aen-cc3501e-ble-gatt/.

Server-only by design

There is no live BLE central peer on this bench — no second device in range — so the app never calls alp_ble_connect(). A full read/write echo against a live central is HIL-deferred: it needs a second BLE device on the bench.

Console: RAM console, not UART

board.yaml sets diagnostics.console: ram. On the alplab bench UART5 isn't captured (only the SE-UART FT232R is on USB, SETOOLS-only), so the RESULT PASS: / RESULT FAIL: line is read from ram_console_buf over SWD, not a serial terminal.

SoM bring-up is one call

The hardware setup — control pins, inter-chip SPI, power/reset sequence — is the reusable cc3501e_bridge_bringup() SoM template, shared verbatim with aen-cc3501e-bringup and aen-cc3501e-companion-tour.

Status

  • native_sim/native/64 (twister, build_only) — against the emulated SPI controller + alp,pin-array in the shipped overlay. Proves the portable-API call shapes compile; not a live GATT round-trip (the CC3501E SPI bridge has no native_sim model).
  • alp_e1m_aen801_m55_he/ae822fa0e5597ls0/rtss_he — the real bench target. Build + Flow-C/A/D flash is a bench step, not a CI run.

Bench result: PASS on physical E1M-AEN801 (SW-DP 0x4C013477), persistent across a cold POR.

See also

Questions about this page? Discuss in Community Forum