void char_array_pktize(char array[][MAX_SIZE]){ int n = 0; for(;n<100;n++){ if(strlen(array[n])>0) make_pkt(n,"PACKET",array[n],array[n]); else{ make_pkt(n,"CLOSE","\n",array[n]); break; } } }
int do_cmd_1_arg(QSP_ARG_DECL Cmd_Index cmd_index, int data_word) { u_short len; char pkt[20]; USB2000_Cmd_Def *ucdp; ucdp = &usb2000_cmd_tbl[cmd_index]; make_pkt( pkt, ucdp->ucd_cmd, data_word ); send_pkt(QSP_ARG pkt); len = strlen(pkt); if( get_echo(QSP_ARG pkt) < 0 ) return -1; if ( recv_a_byte(SINGLE_QSP_ARG) != ACK ) { WARN("ERROR: no ACK received"); return -1; } if( get_tail(SINGLE_QSP_ARG) < 0 ) return -1; return 0; }
static void queue_pkt_with_ack(struct peer *peer, Pkt__PktCase type, const void *msg, void (*ack_cb)(struct peer *peer, void *arg), void *ack_arg) { queue_raw_pkt(peer, make_pkt(peer, type, msg), ack_cb, ack_arg); }
void send_nack(int caller, struct pkt *pkt_to_nack) { int seqnum = pkt_to_nack->seqnum; char msg[MSGSIZE] = {'N','A','C','K',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; struct pkt *nack_pkt = make_pkt(seqnum, msg); nack_pkt->acknum = 0; tolayer3(caller, *nack_pkt); }
Pkt *pkt_err(struct peer *peer, const char *msg, ...) { Error *e = tal(peer, Error); va_list ap; error__init(e); va_start(ap, msg); e->problem = tal_vfmt(e, msg, ap); va_end(ap); return make_pkt(peer, PKT__PKT_ERROR, e); }
/* called from layer 5, passed the data to be sent to other side */ void A_output(struct msg message) { printf("CCH> A_output> Got message\n"); struct pkt *out_pkt; int seqnum; seqnum = (last_pkt && last_pkt->seqnum < 1) ? 1 : 0; out_pkt = make_pkt(seqnum, message.data); last_pkt = out_pkt; send_pkt(A, out_pkt); }
int test_wnd(char **wnd, void *pkt, uint32_t seq){ int err; pkt = malloc(MAX_PKT_SIZE); make_pkt(pkt, ACK, advwin, NULL, 0); print_hdr((struct xtcphdr*)pkt); err = add_to_wnd(seq, pkt, (const char **)wnd); if(err < 0) { _DEBUG("%s\n", "ERROR"); free(wnd); return err; } print_wnd((const char**)wnd); return 0; }
void array_pktize(char strarr[][MAX_SIZE]){ char temp[78]=""; int n = 0; while(n<100){ strcpy(temp,strarr[n]); if(strlen(temp)>0){ make_pkt(n,temp,strarr[n]); n++; }else{ make_pkt_close(n,strarr[n]); break; } } //print_chararray(strarr); }
int get_scan(QSP_ARG_DECL Spectral_Data *sdp) { char pkt[6]; /* will contain either "Z1\n" or "Z0001" */ int data_word = 1; /* pg.12, 1 or 0 doesn't matter */ char cmd[] = "Z"; u_short len; u_short n_spec_recvd[1]; Pxl_Mode_Info pxl_mode_info; /* BUG: we should have a routine here that checks * if we have scans in memory or not. * This will be better than sending a pkt * and getting a NAK due to absence of spectra * in data memory. */ make_pkt( pkt, cmd, data_word ); send_pkt(QSP_ARG pkt); len = strlen(pkt); if( get_echo(QSP_ARG pkt) < 0 ) return -1; if ( recv_a_byte(SINGLE_QSP_ARG) != ACK ) { WARN("ERROR: no ACK received"); return -1; } if( get_spectrum(QSP_ARG sdp, n_spec_recvd, &pxl_mode_info) < 0 ) return -1; if( get_tail(SINGLE_QSP_ARG) < 0 ) return -1; do_wavlen_crktion(sdp, n_spec_recvd[0], &pxl_mode_info); do_non_linear_crktion(sdp, n_spec_recvd[0]); return n_spec_recvd[0]; }
int get_n_of_scans(SINGLE_QSP_ARG_DECL) { char pkt[6]; /* will contain either "W1\n" or "W0001" */ u_short len; int is_ack; int data_value; char cmd[] = "W"; make_pkt( pkt, cmd, 1 ); len = strlen(pkt); send_pkt(QSP_ARG pkt); if( get_echo(QSP_ARG pkt) < 0 ) return -1; if ( ( is_ack = recv_a_byte(SINGLE_QSP_ARG) ) != ACK ) { if( is_ack == NAK ) { if( get_tail(SINGLE_QSP_ARG) < 0 ) return -1; } else { sprintf(ERROR_STRING,"ERROR: Unexpected char 0x%x received instead of ACK/NAK", is_ack); WARN(ERROR_STRING); } return -1; } if( ( data_value = recv_a_value(SINGLE_QSP_ARG) ) < 0 ) return -1; if( get_tail(SINGLE_QSP_ARG) < 0 ) return -1; return data_value; }
static void queue_pkt(struct peer *peer, Pkt__PktCase type, const void *msg) { queue_raw_pkt(peer, make_pkt(peer, type, msg)); }