ESP8266 Centre + NB
函数 | 变量
tcp_server.c 文件参考
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "mem.h"
#include "espconn.h"
#include "tcp_server.h"
#include "room_info.h"
tcp_server.c 的引用(Include)关系图:

函数

void StudyRoom_UpdataData (uint8 *msg_string)
 更新本地数据 更多...
 
void StudyRoom_GetStatusHex (uint8 room_no, uint8 *out_hexstr)
 
void send2room (uint8 roomNO, char *pdata)
 
void ICACHE_FLASH_ATTR tcp_server_init (uint32 port)
 

变量

struct espconnclient [4]
 

函数说明

void StudyRoom_UpdataData ( uint8 msg_string)

更新本地数据

  • 更新单个房间的环境信息
  • 更新单个房间的单个用电器的状态

单次调用时,环境信息和用电器状态信息不同时更新

  • 由各个房间的client节点发送到本节点的tcp server上,msg_string来自于tcp_server_recv()
参数
[in]msg_string信息指令串
  • 0xFF 作为标志位:室内环境信息
  • 0xFE 作为标志位:用电器状态信息
参见
room_status
room_message
139  {
140 
141  uint8 hexstr[128];
142 
143  if (msg_string[0] == 0xFF)
144  {
145  /* msg_string[1] 房间编号,取值范围[1..4] */
146  os_memcpy((room_message + msg_string[1] - 1), msg_string + 2, 4 );
147 
148  }
149  else if (msg_string[0] == 0xFE)
150  {
151  // StudyRoom_GetStatusHex(msg_string[1], hexstr);
152  // ESP_DEBUG("status str now is: %s, num is %d", hexstr, room_status[0]);
153 
154  /* 位运算 先将目标用电器位置零,再将指令赋值给目标用电器位 */
155  *(room_status + (msg_string[1] - 1)) &= ~(0x01 << (8 * msg_string[2] + msg_string[3]));
156  *(room_status + (msg_string[1] - 1)) |= ((uint32)msg_string[4] << (8 * msg_string[2] + msg_string[3]));
157 
158  // StudyRoom_GetStatusHex(msg_string[1], hexstr);
159  // ESP_DEBUG("status str now is: %s, num is %d", hexstr, room_status[0]);
160  }
161 
162 }
RoomMessage room_message[4]
四个房间的环境信息
Definition: app_study_room.c:59
#define os_memcpy
Definition: osapi.h:36
uint32 room_status[4]
四个房间的用电器状态信息
Definition: app_study_room.c:119
unsigned char uint8
Definition: c_types.h:43
unsigned int uint32
Definition: c_types.h:52
void StudyRoom_GetStatusHex ( uint8  room_no,
uint8 out_hexstr 
)
void send2room ( uint8  roomNO,
char *  pdata 
)
106  {
107  struct espconn *room;
108  os_printf("room no is %d\n",roomNO);
109  switch(roomNO){
110  case ROOM_ONE_NO:
111  room = client[ROOM_ONE_NO];
112  break;
113  case ROOM_TWO_NO:
114  room = client[ROOM_TWO_NO];
115  break;
116  case ROOM_THREE_NO:
117  room = client[ROOM_THREE_NO];
118  break;
119  case ROOM_FOUR_NO:
120  room = client[ROOM_FOUR_NO];
121  break;
122  }
123 
124  espconn_send(room, pdata, 5);
125 }
sint8 espconn_send(struct espconn *espconn, uint8 *psent, uint16 length)
#define ROOM_FOUR_NO
Definition: include/room_info.h:20
#define os_printf
Definition: osapi.h:62
#define ROOM_THREE_NO
Definition: include/room_info.h:19
uint8 room
Definition: room_info.c:3
#define ROOM_ONE_NO
Definition: include/room_info.h:17
Definition: espconn.h:104
#define ROOM_TWO_NO
Definition: include/room_info.h:18
struct espconn * client[4]
Definition: tcp_server.c:21

函数调用图:

void ICACHE_FLASH_ATTR tcp_server_init ( uint32  port)
134  {
135  static struct espconn s_tcp_server;
136  static esp_tcp s_esptcp;
137 
138  s_tcp_server.type = ESPCONN_TCP;
139  s_tcp_server.state = ESPCONN_NONE;
140  s_tcp_server.proto.tcp = &s_esptcp;
141  s_tcp_server.proto.tcp->local_port = port;
142  espconn_regist_connectcb(&s_tcp_server, tcp_server_listen);
143 
144  espconn_accept(&s_tcp_server);
145  espconn_regist_time(&s_tcp_server, 0, 0); // TCP server 瓒呮椂鏃堕棿
146 
147  //os_printf("tcp_server_init\r\n");
148 }
sint8 espconn_accept(struct espconn *espconn)
Definition: espconn.h:66
Definition: espconn.h:75
sint8 espconn_regist_connectcb(struct espconn *espconn, espconn_connect_callback connect_cb)
sint8 espconn_regist_time(struct espconn *espconn, uint32 interval, uint8 type_flag)
Definition: espconn.h:104
Definition: espconn.h:59

函数调用图:

这是这个函数的调用关系图:

变量说明

struct espconn* client[4]