void send_debug_packet(app_state_t *s, ts_packet_t *ts_packet_ptr, float est_error) { timesync_t * temp_ts_ptr = get_timesync_ptr(s, ROOT_NODE); test_packet_t *test_packet_ptr = (test_packet_t *)sys_malloc(sizeof(test_packet_t)); if( temp_ts_ptr == NULL ) { test_packet_ptr->a = 0; test_packet_ptr->b = 0; test_packet_ptr->sampling_period = 2; } else { test_packet_ptr->a = temp_ts_ptr->a; test_packet_ptr->b = temp_ts_ptr->b; test_packet_ptr->sampling_period = temp_ts_ptr->sampling_period; } test_packet_ptr->time[0] = ts_packet_ptr->time[0]; test_packet_ptr->time[1] = ts_packet_ptr->time[1]; test_packet_ptr->type = TEST_PACKET; test_packet_ptr->node_id = ker_id(); test_packet_ptr->est_error = est_error; post_uart(s->pid, s->pid, UART_CALC_DEBUG, sizeof(test_packet_t), test_packet_ptr, SOS_MSG_RELEASE, UART_ADDRESS); send_buffer(s, ROOT_NODE); send_buffer2(s, ROOT_NODE); }
void client(int clinx, char *name, long id, int inx) { int ferr; int lerr; int msgid; Util_AA<char> recv_buffer(BUFSIZ); Util_AA<short> recv_buffer3(BUFSIZ); RT results; Util_AA<char> send_buffer(BUFSIZ); Util_AA<short> send_buffer2(BUFSIZ); int send_len; MS_SRE_LDONE sre_ldone; sprintf(&send_buffer, "hello, greetings from %s, name=%s, id=%ld, inx=%d", my_name, name, id, inx); while (clinx >= 0) { strcat(&send_buffer, "!"); clinx--; } send_len = (int) strlen(&send_buffer) + 1; ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid &send_buffer2, // reqctrl (ushort) (inx & 1), // reqctrlsize &recv_buffer3, // replyctrl 1, // replyctrlmax &send_buffer, // reqdata (ushort) send_len, // reqdatasize &recv_buffer, // replydata BUFSIZ, // replydatamax (SB_Tag_Type) &send_buffer, // linkertag 0, // pri 0, // xmitclass XMSG_LINK_LDONEQ); // linkopts util_check("XMSG_LINK_", ferr); do { lerr = XWAIT(LDONE, -1); TEST_CHK_WAITIGNORE(lerr); lerr = XMSG_LISTEN_((short *) &sre_ldone, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); assert(lerr == XSRETYPE_LDONE); assert(sre_ldone.sre_linkTag == (SB_Tag_Type) &send_buffer); ferr = XMSG_BREAK_(msgid, results.u.s, TPT_REF(phandle)); util_check("XMSG_BREAK_", ferr); assert(results.u.t.ctrl_size == (uint) (inx & 1)); assert(results.u.t.data_size > (strlen(&send_buffer) + 14)); assert(results.u.t.errm == RT_DATA_RCVD); // data printf("%s\n", &recv_buffer); }
void *client_thr(void *arg) { Util_AA<char> event_data(MS_MON_MAX_SYNC_DATA); int event_len; int ferr; int inx; int msgid; Util_AA<char> recv_buffer(BUFSIZ); Util_AA<short> recv_buffer3(BUFSIZ); RT results; Util_AA<char> send_buffer(BUFSIZ); Util_AA<short> send_buffer2(BUFSIZ); int send_len; long t_elapsed; struct timeval t_start; struct timeval t_stop; int whoami = inxc++; arg = arg; // touch if (event) { ferr = msg_mon_event_wait(1, &event_len, &event_data); TEST_CHK_FEOK(ferr); } util_time_timer_start(&t_start); for (inx = 0; inx < loop; inx++) { if (txrate) { if ((inx % 100) == 0) { util_time_timer_stop(&t_stop); t_elapsed = (t_stop.tv_sec * 1000000 + t_stop.tv_usec) - (t_start.tv_sec * 1000000 + t_start.tv_usec); t_elapsed = t_elapsed / 1000; if (inx == 0) printf("%s: c-%d\n", name, whoami); else printf("%s: c-%d, inx=%d, msg/ms=%ld\n", name, whoami, inx, t_elapsed / inx); } } else if (mq) { if ((inx % 100) == 0) printf("%s: c-%d, inx=%d\n", name, whoami, inx); } else if (!quiet) printf("c-%d, inx=%d\n", whoami, inx); fflush(stdout); sprintf(&send_buffer, "hello, greetings from %s-%d, inx=%d", my_name, whoami, inx); send_len = (int) strlen(&send_buffer) + 1; if (verbose) printf("c-%d: sending %s\n", whoami, &send_buffer); ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid &send_buffer2, // reqctrl (ushort) (inx & 1), // reqctrlsize &recv_buffer3, // replyctrl (ushort) 1, // replyctrlmax &send_buffer, // reqdata (ushort) send_len, // reqdatasize &recv_buffer, // replydata (ushort) BUFSIZ, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts if (!abortserver) util_check("XMSG_LINK_", ferr); ferr = XMSG_BREAK_(msgid, results.u.s, TPT_REF(phandle)); if (!abortserver) util_check("XMSG_BREAK_", ferr); if (!abortserver) { if (verbose) printf("c-%d: received %s\n", whoami, &recv_buffer); assert(results.u.t.ctrl_size == (uint) (inx & 1)); assert(results.u.t.data_size == 100); assert(results.u.t.errm == RT_DATA_RCVD); // data if (inx == (loop - 1)) { if (maxcp > 1) printf("%s: %s\n", name, &recv_buffer); else printf("%s\n", &recv_buffer); } } } return NULL; }
void client(int clinx, char *name, long id, int inx) { int ferr; int lerr; bool ok; int match; Util_AA<int> msgid(MAX_SENDS); Util_AA<char> recv_buffer(MAX_SENDS * BUFSIZ); Util_AA<short> recv_buffer3(MAX_SENDS * BUFSIZ); RT results; int send; Util_AA<char> send_buffer(MAX_SENDS * BUFSIZ); Util_AA<short> send_buffer2(MAX_SENDS * BUFSIZ); int send_len; MS_SRE_LDONE sre_ldone; for (send = 0; send < MAX_SENDS; send++) { sprintf(&send_buffer.ip_v[send * BUFSIZ], "hello, greetings from %s, name=%s, id=%ld, inx=%d, send=%d", my_name, name, id, inx, send); while (clinx >= 0) { strcat(&send_buffer.ip_v[send * BUFSIZ], "!"); clinx--; } send_len = (int) strlen(&send_buffer.ip_v[send * BUFSIZ]) + 1; ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid.ip_v[send], // msgid &send_buffer2.ip_v[send * BUFSIZ], // reqctrl (ushort) (inx & 1), // reqctrlsize &recv_buffer3.ip_v[send * BUFSIZ], // replyctrl 1, // replyctrlmax &send_buffer.ip_v[send * BUFSIZ], // reqdata (ushort) send_len, // reqdatasize &recv_buffer.ip_v[send * BUFSIZ], // replydata BUFSIZ, // replydatamax (SB_Tag_Type) // linkertag &send_buffer.ip_v[send * BUFSIZ], 0, // pri 0, // xmitclass XMSG_LINK_LDONEQ); // linkopts util_check("XMSG_LINK_", ferr); } for (send = 0; send < MAX_SENDS;) { lerr = XWAIT(LDONE, -1); TEST_CHK_WAITIGNORE(lerr); for (;;) { lerr = XMSG_LISTEN_((short *) &sre_ldone, // sre 0, // listenopts 0); // listenertag if (lerr == XSRETYPE_NOWORK) break; send++; assert(lerr == XSRETYPE_LDONE); ok = false; for (match = 0; match < MAX_SENDS; match++) { if (sre_ldone.sre_linkTag == (SB_Tag_Type) &send_buffer.ip_v[match * BUFSIZ]) { ok = true; break; } } assert(ok); ferr = XMSG_BREAK_(msgid.ip_v[match], results.u.s, TPT_REF(phandle)); util_check("XMSG_BREAK_", ferr); assert(results.u.t.ctrl_size == (uint) (inx & 1)); assert(results.u.t.data_size > (strlen(&send_buffer.ip_v[match * BUFSIZ]) + 14)); assert(results.u.t.errm == RT_DATA_RCVD); // data printf("%s\n", &recv_buffer.ip_v[match * BUFSIZ]); } } }