57 lines
2.4 KiB
C
57 lines
2.4 KiB
C
#include "board/nl_board.h"
|
|
|
|
#include <string.h>
|
|
|
|
#define NONE {-1, NL_PIN_NONE, false, false}
|
|
#define CH(c, p) {(c), (p), false, false}
|
|
#define CHL(c, p) {(c), (p), true, false} /* active low */
|
|
#define CHA(c, p) {(c), (p), false, true} /* antiphase */
|
|
|
|
/* SM2135EH current codes: RGB high nibble (15 mA = 1, 40 mA = 6, 45 mA = 7),
|
|
* WY low nibble (15 mA = 3, 35 mA = 7). Values from qcl_build_config_lamp.h. */
|
|
#define NO_SM NL_PIN_NONE, NL_PIN_NONE, 0
|
|
|
|
const nl_board_t nl_boards[] = {
|
|
/* R G B CW WW */
|
|
{"evk", "W600 EVK v1.2", NL_DRV_PWM, true, 2700, 6500, 5000,
|
|
{CHL(0, NL_PB(18)), CHL(2, NL_PB(16)), CHL(3, NL_PB(15)), CHL(1, NL_PB(13)), CHL(4, NL_PB(8))}, NO_SM},
|
|
{"e27_rgb", "Klyqa E27 RGB CW/WW", NL_DRV_SM2135EH, true, 2700, 6500, 0,
|
|
{NONE, NONE, NONE, NONE, NONE}, NL_PB(13), NL_PB(8), 0x17},
|
|
{"e14_rgb", "Klyqa E14 RGB CW/WW", NL_DRV_SM2135EH, true, 2700, 6500, 0,
|
|
{NONE, NONE, NONE, NONE, NONE}, NL_PB(8), NL_PB(13), 0x73},
|
|
{"gu10_rgb", "Klyqa GU10 RGB CW/WW", NL_DRV_SM2135EH, true, 2700, 6500, 0,
|
|
{NONE, NONE, NONE, NONE, NONE}, NL_PB(8), NL_PB(13), 0x63},
|
|
{"e27_cw", "Klyqa E27 CW/WW", NL_DRV_PWM, false, 2700, 6500, 600,
|
|
{NONE, NONE, NONE, CHA(1, NL_PB(13)), CH(4, NL_PB(8))}, NO_SM},
|
|
{"e14_cw", "Klyqa E14 CW/WW", NL_DRV_PWM, false, 2700, 6500, 600,
|
|
{NONE, NONE, NONE, CH(2, NL_PB(16)), CH(4, NL_PB(8))}, NO_SM},
|
|
{"gu10_cw", "Klyqa GU10 CW/WW", NL_DRV_PWM, false, 2700, 6500, 600,
|
|
{NONE, NONE, NONE, CH(2, NL_PB(16)), CH(4, NL_PB(8))}, NO_SM},
|
|
/* G95: current table: CW=PB13, WW=PB15 (new assignment); old bulbs may use
|
|
* PB16=WW, PB15=CW - verify on a series bulb. */
|
|
{"g95_cw", "Klyqa G95 Vintage CW/WW", NL_DRV_PWM, false, 2000, 5000, 600,
|
|
{NONE, NONE, NONE, CH(1, NL_PB(13)), CH(3, NL_PB(15))}, NO_SM},
|
|
};
|
|
|
|
const size_t nl_boards_count = sizeof(nl_boards) / sizeof(nl_boards[0]);
|
|
|
|
const nl_board_t *nl_board_find(const char *id)
|
|
{
|
|
for (size_t i = 0; i < nl_boards_count; i++)
|
|
if (strcmp(nl_boards[i].id, id) == 0)
|
|
return &nl_boards[i];
|
|
return NULL;
|
|
}
|
|
|
|
#ifdef NINLIGHT_DEVICE_ID
|
|
const nl_board_t *nl_board_get(void)
|
|
{
|
|
return nl_board_find(NINLIGHT_DEVICE_ID);
|
|
}
|
|
#endif
|
|
|
|
uint8_t nl_board_dmx_slots(const nl_board_t *b)
|
|
{
|
|
return (b != NULL && b->has_rgb) ? 6u : 3u;
|
|
}
|