ZHCU938C May 2018 – January 2021 CC3100 , CC3100MOD , CC3200 , CC3200MOD
当 HTTP 服务器在 HTML 文件中找到用户令牌时,服务器便会为主机生成 get_token_value(对于 GET 令牌)或 post_token_value(对于 post 令牌)事件,以便用户正确处理它们。
当主机获得具有特定令牌名称的 get_token_value 事件时,服务器会使用 send_token_value 命令返回该令牌名称的令牌值。
如果主机没有任何令牌值要返回,服务器会使用 0 作为令牌值的长度。
当用户获得具有该令牌名称和值的 post_token_value 事件时,必须将这个新的令牌值保存下来。
在 SimpleLink 驱动程序中,当生成上述事件之一时,驱动程序会调用一个名为 SimpleLinkHttpServerCallback(); 的预定义回调函数
该回调函数定义如下:
void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpServerEvent, SlHttpServerResponse_t *pHttpServerResponse)
其中 serverEvent 和 serverResponse 定义如下:
typedef struct
{
unsigned long Event;
SlHttpServerEventData_u EventData;
}SlHttpServerEvent_t;
typedef struct
{
unsigned long Response;
SlHttpServerResponsedata_u ResponseData;
}SlHttpServerResponse_t;
typedef union
{
slHttpServerString_t httpTokenName; /* SL_NETAPP_HTTPGETTOKENVALUE */
slHttpServerPostData_t httpPostData; /* SL_NETAPP_HTTPPOSTTOKENVALUE */
} SlHttpServerEventData_u;
typedef union
{
slHttpServerString_t token_value; /* < 64 bytes*/
} SlHttpServerResponsedata_u;
typedef struct _slHttpServerString_t
{
UINT8 len;
UINT8 *data;
} slHttpServerString_t;
typedef struct _slHttpServerPostData_t
{
slHttpServerString_t action;
slHttpServerString_t token_name;
slHttpServerString_t token_value;
}slHttpServerPostData_t;
以下是用户回调函数示例代码:
/*HTTP 服务器回调函数示例 */
void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpServerEvent,
SlHttpServerResponse_t *pHttpServerResponse)
{
switch (pHttpServerEvent->Event)
{
/* 处理 Get 令牌值 */
case SL_NETAPP_HTTPGETTOKENVALUE:
{
char * tokenValue;
tokenValue = GetTokenValue (pHttpServerEvent >EventData.httpTokenName);
/* 使用驱动程序存储器进行响应 - 将令牌值复制到事件响应
重要 - 令牌值长度应 < MAX_TOKEN_VALUE_LEN (64 bytes) */
strcpy (pHttpServerResponse->ResponseData.token_value.data, tokenValue);
pHttpServerResponse->ResponseData.token_value.len = strlen (tokenValue);
}
break;
/* 处理 Post 令牌 */
case SL_NETAPP_HTTPPOSTTOKENVALUE:
{
HandleTokenPost (pHttpServerEvent->EventData.httpPostData.action,
pHttpServerEvent->EventData.httpPostData.token_name,
pHttpServerEvent->EventData.httpPostData.token_value);
}
break;
default:
break;
}
}
若要使 HTTP 回调函数正常工作,应在 user.h 中取消注释以下行:
#define sl_HttpServerCallback SimpleLinkHttpServerCallback