aboutsummaryrefslogtreecommitdiffstats
path: root/usr/space_light/src/diagnostic.c
diff options
context:
space:
mode:
authorBernhard Guillon <Bernhard.Guillon@begu.org>2024-12-25 00:34:42 +0100
committerBernhard Guillon <Bernhard.Guillon@begu.org>2024-12-29 19:54:53 +0100
commit1762c56956bafd6fc0636516b494dfa935ff8aec (patch)
tree5b693c0c70400b71c982401fd9693a48991d3c23 /usr/space_light/src/diagnostic.c
parent40404fb81dfad3f5c5cf567bb053796a9135165e (diff)
downloadwb3s-ble-nebula-galaxy-1762c56956bafd6fc0636516b494dfa935ff8aec.tar.gz
wb3s-ble-nebula-galaxy-1762c56956bafd6fc0636516b494dfa935ff8aec.zip
space_light: first version
TODO: pwm initialization is currently best guess could be wrong active low|high TODO: implement pairing TODO: implement timer TODO: use the button for something TODO: implement a better client
Diffstat (limited to 'usr/space_light/src/diagnostic.c')
-rw-r--r--usr/space_light/src/diagnostic.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/usr/space_light/src/diagnostic.c b/usr/space_light/src/diagnostic.c
new file mode 100644
index 0000000..d1afb25
--- /dev/null
+++ b/usr/space_light/src/diagnostic.c
@@ -0,0 +1,68 @@
+
+#include "generic.h"
+
+#include "RomCallFlash.h"
+#include "ble_reg_access.h"
+#include "common_hci.h"
+#include "common_llcp.h"
+#include "common_utils.h"
+#include "ea.h"
+#include "ecc_p256.h"
+#include "em_buf.h"
+#include "em_map_ble.h"
+#include "lld.h"
+#include "lld_evt.h"
+#include "lld_pdu.h"
+#include "lld_util.h"
+#include "llm.h"
+#include "llm_util.h"
+#include "reg_ble_em_cs.h"
+#include "reg_ble_em_rx_buffer.h"
+#include "reg_ble_em_rx_desc.h"
+#include "reg_ble_em_tx_buffer_cntl.h"
+#include "reg_ble_em_tx_buffer_data.h"
+#include "reg_ble_em_tx_desc.h"
+#include "reg_blecore.h"
+#include "rwip.h"
+#include "rwip_config.h"
+
+void output_ble_registers(void);
+
+uint32_t assembly_test0(uint32_t input);
+
+void output_ble_registers(void) {
+
+ uint8_t rxpwrup0 = 0;
+ uint8_t txpwrdn0 = 0;
+ uint8_t txpwrup0 = 0;
+
+ bk_printf("BLE control[8]: 0x%x\n", ble_cntl_get(8));
+
+ ble_radiopwrupdn0_unpack(&rxpwrup0, &txpwrdn0, &txpwrup0);
+ bk_printf(
+ "Power down control 0: rxpwrup0::0x%x, txpwrdn0::0x%x, txpwrup0::0x%x\n",
+ rxpwrup0, txpwrdn0, txpwrup0);
+ bk_printf("Power down control 0: 0x%x\n", ble_radiopwrupdn0_get());
+ bk_printf("Interrupt control: 0x%x\n", ble_intcntl_get());
+ bk_printf("Upper BDADDR: 0x%x\n", ble_bdaddru_getf());
+ bk_printf("Lower BDADDR: 0x%x\n", ble_bdaddrl_getf());
+}
+
+uint32_t assembly_test0(uint32_t input) {
+ uint32_t output = 0xABCDEFEF;
+ __asm__ __volatile__(" sub r3, %0, #1\n"
+ " sbc %0, r3\n"
+ : "=r"(output)
+ : "0"(input)
+ : "cc", "r3");
+ return output;
+}
+
+void output_diagnostics(void) {
+
+ output_ble_registers();
+
+ bk_printf("Assembly test 0, input=0, output=0x%x\n", assembly_test0(0));
+ bk_printf("Assembly test 0, input=0x800, output=0x%x\n",
+ assembly_test0(0x800));
+}