/* * check_slave.c * * See check.c */ #include /* #include */ /* Not in solaris */ #include "commtest.h" /* #include #include #include #include */ #include "pvm3.h" char *robotname; void err(msg) char *msg; { FILE *fid; fid = fopen("commtest.txt","a"); fprintf(fid,msg); fclose(fid); } void main(argc, argv) int argc; char **argv; { int ptid; char buf[100]; int i, cmd; char proc[32]; int inum, bufid; char myhost[256]; double angles[MSGLEN], v[MSGLEN],a[MSGLEN]; err("Start \n"); gethostname(myhost, sizeof(myhost)); if (inum = pvm_mytid() < 0) { pvm_perror("whoami"); } else { ptid = pvm_parent(); /* pvm_setdebug(3); */ /* communicate successful startup */ strcpy(buf, "commtest_slave started on "); gethostname(buf + strlen(buf), 64); pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, 1); while(1){ bufid = pvm_recv(-1,MSGID); pvm_upkint(&cmd,1,1); if(cmd&RELMOVE){ pvm_upkdouble(angles,MSGLEN,1); err("Relmove \n"); }else if(cmd&WORLDMOVE){ pvm_upkdouble(angles,MSGLEN,1); err("Worldmove \n"); }else if(cmd&SETVA){ pvm_upkdouble(v,1,1); pvm_upkdouble(a,1,1); err("Set VA \n"); } if(cmd&POSQUERY){ pvm_initsend(PvmDataDefault); pvm_pkdouble(angles,MSGLEN,1); pvm_send(ptid,MSGID); err("Posquery \n"); } } exit(0); } }