节点模型 aaa_polling
进程模型 aaa_polling_process
SV
TV
无
HB
#define IN_STRM 0
#define OUT_STRM 0
#define STRM_INTRPT (op_intrpt_type() == OPC_INTRPT_STRM)
//extern int beacon;
Init
beacon = 1;
ack_num = 0;
Strm
Packet* pkptr;
int node_flag;
int node_on;
Packet* polling_pkt;
pkptr = op_pk_get(IN_STRM);
op_pk_nfd_get_int32 (pkptr, "flag", &node_flag);
//beacon packet
if (node_flag == 3)
{
op_pk_nfd_get_int32 (pkptr, "on", &node_on);
if(node_on == 1)
{
beacon = 1;
}
else
{
beacon = 0;
}
if(beacon == 0)
{
polling_pkt = op_pk_create_fmt ("aaa_packet_polling");
op_pk_nfd_set (polling_pkt, "dest", ack_num);
op_pk_print (polling_pkt);
op_pk_send(polling_pkt,OUT_STRM);
}
}
//polling ack packet
if(node_flag == 5)
{
ack_num++;
if(ack_num == 10)
{
polling_pkt = op_pk_create_fmt ("aaa_packet_beacon_on");
op_pk_nfd_set (polling_pkt, "on", 1);
op_pk_print (polling_pkt);
op_pk_send(polling_pkt,OUT_STRM);
ack_num = 0;
}
else
{
polling_pkt = op_pk_create_fmt ("aaa_packet_polling");
op_pk_nfd_set (polling_pkt, "dest", ack_num);
op_pk_print (polling_pkt);
op_pk_send(polling_pkt,OUT_STRM);
}
}
op_pk_destroy(pkptr);