webcomm与前端的通讯-goahead服务器流程图
#ifndef __CET_WEBCOMM_H__
#define __CET_WEBCOMM_H__
// 0x0000FFFF
typedef enum eWebSubOptionType
{
WSOT_DASHBOARD = 0X00000001,
WSOT_INTERFACE = 0X00000002,
WSOT_CONNECTION = 0X00000004,
WSOT_NETWORK = 0X00000008,
WSOT_WLAN = 0X00000010,
WSOT_PARAMETERS = 0X00000020,
WSOT_EXPORT = 0X00000040,
WSOT_RESET = 0X00000080,
WSOT_FW_UPDATE = 0X00000100,
WSOT_DEBUG = 0X00000200,
WSOT_LOGS = 0X00000400,
WSOT_USERS = 0X00000800,
WSOT_DATE_AND_TIME = 0X00001000,
WSOT_LOAD_CERT = 0X00002000,
WSOT_IPFILTER = 0X00004000,
WSOT_ABOUT = 0X00008000,
WSOT_MUST_SUPPORT = 0XFFFFFFFF,
} WebSubOptionType_t;
#ifndef WEBCOMM_ACCOUNT_PERMISSION_CHECK
#define WEBCOMM_ACCOUNT_PERMISSION_CHECK ( 1 )
#endif
#ifndef WEBCOMM_ACCOUNT_MAX_NUM
#define WEBCOMM_ACCOUNT_MAX_NUM ( 16 )
#endif
typedef void * WEBHANDLE;
typedef BYTE WebcommResult_t;
enum eWebcommResult
{
WEBERR_RSN_OK = 0, /**< 操作成功 */
WEBERR_RSN_OK_NOTRSP = 1, /**< 操作成功但无回复 */
WEBERR_RSN_ACCOUNT_PASSWORD_ERROR = 11, /**< 账号或密码错误 */
WEBERR_RSN_ACCOUNT_LOGIN_TIMEOUT = 12, /**< 账号登入超时 */
WEBERR_RSN_ACCOUNT_DISABLE = 13, /**< 账号被禁用 */
WEBERR_RSN_ACCOUNT_OUT_NUMBER = 14, /**< 账号数量超出最大值(默认最大16个) */
WEBERR_RSN_ACCOUNT_NOT_PERISSION = 15, /**< 账号没有访问权限 */
WEBERR_RSN_ACCOUNT_ALREADY_EXIST = 16, /**< 账号已存在 */
WEBERR_RSN_ACCOUNT_PASSWORD_SAME = 17, /**< 账号和密码一样 */
WEBERR_RSN_FILES_NOT_EXIST = 18, /**< 文件不存在 */
WEBERR_RSN_FILES_CANNOT_OPEN = 19, /**< 文件不能被打开 */
WEBERR_RSN_FILES_FORMAT_ERROR = 20, /**< 文件格式错误 */
WEBERR_RSN_FILES_CHECKSUM_FAIL = 21, /**< 文件校验失败 */
WEBERR_RSN_DATABASE_OPERATE_FAIL = 22, /**< 数据库操作失败 */
WEBERR_RSN_NOT_FLASH_SPACE = 23, /**< FLASH空间不足 */
WEBERR_RSN_HUB_COMM_FAIL = 24, /**< HUB通信失败 */
WEBERR_RSN_PARAMETER_MISSING = 25, /**< 请求的参数缺失 */
WEBERR_RSN_PARAMETER_VALUE_OUTOFRANGE = 26, /**< 请求的参数值超出范围 */
WEBERR_RSN_MEMORY_ALLOCATION_FAIL = 27, /**< 内存分配失败 */
WEBERR_RSN_URL_NOT_SUPPORT = 28, /**< URL请求路径不支持 */
WEBERR_RSN_REQUEST_NOT_METHOD = 29, /**< 请求不支持该方法 */
WEBERR_RSN_PORT_ALREADY_OCCUPIED = 30, /**< 端口已被占用 */
WEBERR_RSN_UNKNOWN = 60, /**< 未知错误 */
};
typedef struct sReasonInfo
{
WebcommResult_t code; /**< 错误的原因编号 */
const char *message; /**< 编号的字符串形式 */
} GCC_PACKED ReasonInfo_t;
// Webcomm Result Response
#define WEBRES_CODE "code"
#define WEBRES_MESSAGE "message"
#define WEBRES_DATA "data"
#define WEBCOMM_METHOD "method"
#define WEBCOMM_LOGIN_USER "username"
#define WEBCOMM_LOGIN_PASS "password"
#define WEBCOMM_LOGIN_LAST "last_time"
#define WEBCOMM_TOKEN_ACCESS "access_token"
#define WEBMETHOD_POST "POST" // 创建(更新,删除)
#define WEBMETHOD_GET "GET" // 读取
#define POSTMETHOD_CREATE "create" // 创建
#define POSTMETHOD_UPDATE "update" // 更新
#define POSTMETHOD_DELETE "delete" // 删除
#define POSTMETHOD_IMPORT "import" // 导入
#define POSTMETHOD_EXPORT "export" // 导出
#define POSTMETHOD_LOAD "load" // 加载
#define POSTMETHOD_EXECUTE "execute" // 执行
typedef WebcommResult_t (*fHandler_t)(WEBHANDLE webHandle, const char *uriPath, Webs *wp);
// create webcomm object
WEBHANDLE WebcommCreate(void);
// destroy webcomm object
void WebcommDestroy(WEBHANDLE webHandle);
// send result from webcomm data
int WebcommSendResult(WEBHANDLE webHandle, Webs *wp);
// check User account and password
WebcommResult_t WebcommLoginCheck(WEBHANDLE webHandle, int alreaylogin, const char *cname, const char *cpasswd);
// New Session
WebcommResult_t WebcommNewSession(WEBHANDLE webHandle, Webs *wp, const char *cname, const char *cvalue);
WebcommResult_t WebcommGetSession(WEBHANDLE webHandle, Webs *wp, const char *cname);
WebcommResult_t WebcommDeleteSession(WEBHANDLE webHandle, Webs *wp, const char *cname);
WebcommResult_t WebcommExecuteHandler(WEBHANDLE webHandle, Webs *wp, const char *cname);
const char *ReasonInfo(WebcommResult_t code);
///
#endif /* __CET_WEBCOMM_H__ */
/*
* File name : webcommsdk.c
*
* Created on : 2020年3月12日09:35:10
* Au