| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | #ifndef __CLI_H#define __CLI_H#include <stdint.h>#include <stdbool.h>#include "FreeRTOS.h"#include "fr_timers.h"#include "settings_api.h"#include "log.h"/* Dimensions the buffer into which input characters are placed. */#define cmdMAX_INPUT_SIZE			144#define MAX_SESSIONS	5#define array_len(x) (sizeof(x)/sizeof(x[0]))typedef enum{	CLI_AUTH = 0,	CLI_AUTH_PASSW,	CLI_CMD,	CLI_CHANGE_PWD,	CLI_CHANGE_PWD_ACK} input_state_t;typedef enum {	STATE_UNUSED,	STATE_NORMAL,	STATE_CLOSE,} conn_state_t;/** * A cli connection structure. */typedef struct {	TimerHandle_t RepeatSensorInfoTimer;	conn_state_t state;	char buf[cmdMAX_INPUT_SIZE];	uint_fast8_t bufptr;	char prev_cmd[cmdMAX_INPUT_SIZE];	uint8_t optlen;	input_state_t input_state;	user_level_t user_id;	user_level_t id_change_pwd;	char login[MAX_WEB_LOGIN_LEN];	uint8_t login_err;	// the number of failed password entry attempts	bool flag_telnet_ip_option;	// wtf is this	void (*send)(intptr_t fd, const char *str, unsigned len);	intptr_t num_connect;	// fd} cli_state_t;extern cli_state_t cli_states[MAX_SESSIONS];extern const char pcWarningMessage[];extern const unsigned pcWarningMessageLen;void cli_init(void);void cli_getchar(cli_state_t *s, char incoming_char, bool echo_enabled);cli_state_t *alloc_state(void);void free_state(cli_state_t *state);void cli_hello(cli_state_t *cli_state);void cli_save_config(cli_state_t *cli_state);user_level_t cli_auth_user(const char *user, const char *password, log_type_t log_entry_type);void cli_close_connections(void);#endif
 |