Skip to content

Commit

Permalink
a bit of cleanup and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
carlossless committed Sep 1, 2024
1 parent 7f21145 commit cc4dfae
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 51 deletions.
4 changes: 2 additions & 2 deletions src/keyboards/nuphy-air60/kbdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,12 @@
#define RF_BB_SPI_SCK P4_7
#define RF_BB_SPI_MISO P0_6
#define RF_BB_SPI_MOSI P0_7
#define RF_BB_SPI_MOT P0_5
#define RF_BB_SPI_MOT P0_5

#define RF_BB_SPI_CS_P7_4 _P7_4
#define RF_BB_SPI_SCK_P4_7 _P4_7
#define RF_BB_SPI_MISO_P0_6 _P0_6
#define RF_BB_SPI_MOSI_P0_7 _P0_7
#define RF_BB_SPI_MOT_P0_5 _P0_5
#define RF_BB_SPI_MOT_P0_5 _P0_5

#endif
2 changes: 1 addition & 1 deletion src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ void main()
EA = 0;
rf_keep_alive();
ticks = 0;
EA = 1;
EA = 1;
}

matrix_task();
Expand Down
9 changes: 3 additions & 6 deletions src/platform/bb_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
#include "kbdef.h"
#include "delay.h"

#define _nop_() \
__asm \
nop \
__endasm
#define _nop_() __asm nop __endasm

uint8_t bb_spi_xfer_byte(uint8_t data);

Expand All @@ -18,9 +15,9 @@ void bb_spi_xfer(uint8_t *data, int len)
for (int i = 0; i < len; i++) {
data[i] = bb_spi_xfer_byte(data[i]);
}
RF_BB_SPI_CS = 1;
RF_BB_SPI_CS = 1;
RF_BB_SPI_MOSI = 1;
RF_BB_SPI_MOT = 1;
RF_BB_SPI_MOT = 1;
}

uint8_t bb_spi_xfer_byte(uint8_t data)
Expand Down
74 changes: 32 additions & 42 deletions src/platform/bk3632/rf_controller.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,24 @@
#define MAGIC_BYTE 0xaa
#define CMD_REPORT 0x02

typedef enum { RF_MODE_2_4G = 0x00, RF_MODE_BT1 = 0x01, RF_MODE_BT2 = 0x02, RF_MODE_BT3 = 0x03 } rf_mode_t;

typedef enum { RF_PAIRING_OFF = 0x00, RF_PAIRING_ON = 0x01 } rf_pairing_t;

typedef enum { RF_SET_NAME_BT5 = 0x00, RF_SET_NAME_BT3 = 0x01 } rf_set_name_t;

__code const char *rf_bt5_name = "SMK BT5.0";
__code const char *rf_bt3_name = "SMK BT3.0";

__xdata uint8_t rf_tx_buf[32];

void rf_send_blank_report();
// void rf_cmd_generic(uint8_t cmd, uint8_t *buf, uint8_t len);
void rf_cmd_01(uint8_t param1, uint8_t param2);
void rf_cmd_01(rf_mode_t mode, rf_pairing_t pairing);
void rf_cmd_03(uint8_t param);
void rf_cmd_04();
void rf_cmd_05();
void rf_cmd_06(uint8_t param);
void rf_cmd_08(uint8_t param1, uint8_t param2);
void rf_cmd_08(rf_set_name_t type, char *name);
void rf_cmd_0a();
void rf_cmd_0c();
void rf_fetch_4();
Expand All @@ -27,17 +35,17 @@ void rf_init()
delay_ms(6);
rf_keep_alive();
delay_us(200);
rf_cmd_08(0x00, 0x35);
rf_cmd_08(RF_SET_NAME_BT5, rf_bt5_name);
delay_ms(12);
rf_cmd_04();
delay_ms(32);
rf_cmd_08(0x01, 0x33);
rf_cmd_08(RF_SET_NAME_BT3, rf_bt3_name);
delay_ms(12);
rf_cmd_04();
delay_ms(30);
rf_cmd_01(0x00, 0x00);
rf_cmd_01(RF_MODE_2_4G, RF_PAIRING_OFF);
delay_ms(20);
rf_cmd_01(0x00, 0x00);
rf_cmd_01(RF_MODE_2_4G, RF_PAIRING_OFF);
delay_ms(15);
rf_cmd_05();
delay_ms(30);
Expand Down Expand Up @@ -102,15 +110,15 @@ void rf_fetch_4()
bb_spi_xfer(rf_tx_buf, 4);
}

void rf_cmd_01(uint8_t param1, uint8_t param2) // ??, 0x00 or 0x01
void rf_cmd_01(rf_mode_t mode, rf_pairing_t pairing)
{
const uint8_t len = 6;

rf_tx_buf[0] = MAGIC_BYTE;
rf_tx_buf[1] = len - 3;
rf_tx_buf[2] = 0x01;
rf_tx_buf[3] = param1;
rf_tx_buf[4] = param2;
rf_tx_buf[3] = mode;
rf_tx_buf[4] = pairing;
rf_tx_buf[len - 1] = checksum(rf_tx_buf, len - 1);

bb_spi_xfer(rf_tx_buf, 6);
Expand Down Expand Up @@ -178,41 +186,23 @@ void rf_cmd_06(uint8_t param) // 0x00 or 0x01
bb_spi_xfer(rf_tx_buf, len);
}

void rf_cmd_08(uint8_t param1, uint8_t param2) // 0x00 0x01, 0x35 0x33
void rf_cmd_08(rf_set_name_t type, char *name)
{
const uint8_t len = 32;

rf_tx_buf[0] = MAGIC_BYTE;
rf_tx_buf[1] = len - 3;
rf_tx_buf[2] = 0x08;
rf_tx_buf[3] = param1;
rf_tx_buf[4] = 0x0b;
rf_tx_buf[5] = 0x41;
rf_tx_buf[6] = 0x69;
rf_tx_buf[7] = 0x72;
rf_tx_buf[8] = 0x36;
rf_tx_buf[9] = 0x30;
rf_tx_buf[10] = 0x20;
rf_tx_buf[11] = 0x42;
rf_tx_buf[12] = 0x54;
rf_tx_buf[13] = param2;
rf_tx_buf[14] = 0x2e;
rf_tx_buf[15] = 0x30;
rf_tx_buf[16] = 0x00;
rf_tx_buf[17] = 0x00;
rf_tx_buf[18] = 0x00;
rf_tx_buf[19] = 0x00;
rf_tx_buf[20] = 0x00;
rf_tx_buf[21] = 0x00;
rf_tx_buf[22] = 0x00;
rf_tx_buf[23] = 0x00;
rf_tx_buf[24] = 0x00;
rf_tx_buf[25] = 0x00;
rf_tx_buf[26] = 0x00;
rf_tx_buf[27] = 0x00;
rf_tx_buf[28] = 0x00;
rf_tx_buf[29] = 0x00;
rf_tx_buf[30] = 0x00;
rf_tx_buf[0] = MAGIC_BYTE;
rf_tx_buf[1] = len - 3;
rf_tx_buf[2] = 0x08;
rf_tx_buf[3] = type;
int i = 4;
while (*name) {
rf_tx_buf[4] = *name;
name++;
i++;
}
for (int j = i; j < (len - 1); j++) {
rf_tx_buf[j] = 0x00;
}
rf_tx_buf[len - 1] = checksum(rf_tx_buf, len - 1);

bb_spi_xfer(rf_tx_buf, len);
Expand Down

0 comments on commit cc4dfae

Please sign in to comment.