Add channel_get_total()
This commit is contained in:
@ -26,6 +26,7 @@ uint8_t channel_gpio_by_idx(int idx);
|
||||
uint8_t channel_idx_by_gpio(int gpio);
|
||||
void channel_set(int idx, bool state);
|
||||
bool channel_get(int idx);
|
||||
int channel_get_total();
|
||||
void channel_report(int idx, char *msg, int msg_len);
|
||||
void channel_handler(int gpio, void *arg);
|
||||
|
||||
|
@ -13,6 +13,10 @@ static bool valid_gpio(const int gpio) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int channel_get_total() {
|
||||
return s_num_channels;
|
||||
}
|
||||
|
||||
bool channel_init(const char *fn) {
|
||||
char *json;
|
||||
void *h = NULL;
|
||||
@ -120,7 +124,7 @@ uint8_t channel_gpio_by_idx(int idx) {
|
||||
uint8_t channel_idx_by_gpio(int gpio) {
|
||||
uint8_t i;
|
||||
|
||||
for(i=0; i<3; i++) {
|
||||
for(i=0; i<channel_get_total(); i++) {
|
||||
if (gpio == s_channels[i].button_gpio)
|
||||
return i;
|
||||
}
|
||||
@ -131,7 +135,7 @@ void channel_report(int idx, char *msg, int msg_len) {
|
||||
if (!msg || msg_len==0)
|
||||
return;
|
||||
|
||||
if (idx<0 || idx>=s_num_channels)
|
||||
if (idx<0 || idx>=channel_get_total())
|
||||
return;
|
||||
|
||||
snprintf(msg, msg_len-1, "{\"idx\": %d, \"button_gpio\": %d, \"led_gpio\": %d, \"relay_gpio\": %d, \"relay_state\": %d}",
|
||||
@ -141,7 +145,7 @@ void channel_report(int idx, char *msg, int msg_len) {
|
||||
void channel_set(int idx, bool state) {
|
||||
double now = mg_time();
|
||||
|
||||
if (idx<0 || idx>=s_num_channels)
|
||||
if (idx<0 || idx>=channel_get_total())
|
||||
return;
|
||||
|
||||
s_channels[idx].button_last_change = now;
|
||||
@ -153,7 +157,7 @@ void channel_set(int idx, bool state) {
|
||||
}
|
||||
|
||||
bool channel_get(int idx) {
|
||||
if (idx<0 || idx>=s_num_channels)
|
||||
if (idx<0 || idx>=channel_get_total())
|
||||
return false;
|
||||
|
||||
return s_channels[idx].relay_state == 1;
|
||||
|
@ -21,8 +21,8 @@ static bool rpc_args_to_idx_and_gpio(struct mg_rpc_request_info *ri, struct mg_s
|
||||
return false;
|
||||
}
|
||||
|
||||
if (idx<0 || idx>2) {
|
||||
mg_rpc_send_errorf(ri, 400, "idx must be 0, 1, 2");
|
||||
if (idx<0 || idx>=channel_get_total()) {
|
||||
mg_rpc_send_errorf(ri, 400, "idx must be between 0 and %d", channel_get_total()-1);
|
||||
ri = NULL;
|
||||
return false;
|
||||
}
|
||||
@ -95,8 +95,8 @@ static void rpc_channel_set_handler(struct mg_rpc_request_info *ri, void *cb_arg
|
||||
return;
|
||||
}
|
||||
|
||||
if (idx<0 || idx>2) {
|
||||
mg_rpc_send_errorf(ri, 400, "idx must be 0, 1, 2");
|
||||
if (idx<0 || idx>=channel_get_total()) {
|
||||
mg_rpc_send_errorf(ri, 400, "idx must be between 0 and %d", channel_get_total()-1);
|
||||
ri = NULL;
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user