/* * server.c * socket server for data, debug */ #include #include #include #include #include #include "task.h" #include "server.h" //#include "scan_inputs.h" #include "process.h" #include "system.h" /* socket def's are in time.c */ /* move sock init's, def's here ?*/ static float val = 0; static char debug[25]; void server(void) { static int state =0; printf ("\nserver \n"); state = get_server(); printf ("val %f \n",val); } int parse_cmd(char *comd) { char local[16]; char valu[16]; char resp[16]; int i; int len = 0; float ynum; proc_t *p = &proc; pid_t_ *d = &pid; nonv_t *n = &non_volatile; char **end; #if 1 if(comd[0] == '\0') return 0; while (*comd ==' ') { comd++; } #endif len = strlen( comd); strcpy(local,comd); /* make comd lower case */ if(len) { for(i=0;ichanged = 1; /* which command?*/ switch( local[1]) { case'k': switch( local[2]) { case 'd': /* set derivative gain */ d->kd = ynum; break; case 'i': /* set integral gain */ d->ki = ynum; break; case 'p': /* set proportional gain */ d->kp = ynum; break; default: /* handle error - undefined or incomplete message */ return -1; break; } break; case'l': switch( local[2]) { case'n': /* set controller max */ d->y_min = ynum; break; case'x': /* set controller max */ d->y_max = ynum; break; default: /* handle error - undefined or incomplete message */ break; } //stuff; break; case's': switch( local[2]) { case 'p': /* setpoint*/ p->prev_sp = p->sp; p->sp = ynum; break; case 'v': /*save parameters */ n->changed = 1; update_non_volatiles(n); n->changed = save_non_volatiles(n); //exit(1); break; case'g': n->changed = 1; n->changed = get_non_volatile(n); break; default: /* handle error - undefined or incomplete message */ printf("server fault \n"); //exit(1); break; } break; default: /* handle error - undefined or incomplete message */ return -1; } } /* check delimeter */ /* is ?query ? */ else if( local[0] == '?') { /* which command?*/ switch( local[1]) { case'k': switch( local[2]) { case 'd': ynum = d->kd; strcpy(resp,"#kd"); break; case 'i': ynum = d->ki; strcpy(resp,"#ki"); break; case 'p': ynum = d->kp; strcpy(resp,"#kp"); break; default: return -1; break; } break; case'l': switch( local[2]) { case 'n': ynum = d->y_min; strcpy(resp,"#ln"); break; case 'x': ynum = d->y_max; strcpy(resp,"#lx"); break; default: return -1; break; } break; case'p': switch(local[2]) { case 'v': ynum = p->y; strcpy(resp,"#pv"); break; default: ynum = 0; return -1; break; } break; case's': switch(local[2]) { case 'p': ynum = p->sp; strcpy(resp,"#sp"); break; default: ynum = 0; return -1; break; } break; default: printf("local[2] %c \n",local[2]); return -1; break; } send_response(resp,ynum); } else { /* command unknown */ printf("c[0] %c \n",local[0]); return -1; } return 0; } #if 0 int main () { } #endif