void debug_init(void) { for(int i = 0; i < 8; i++) { debug_show(1<<i); wait(500); } debug_show(0xFF); wait(500); debug_show(0x55); wait(500); debug_show(0xAA); wait(500); debug_show(0x00); wait(500); }
/* return 0 if failed */ int niggli_reduce(double *lattice_, const double eps_) { int i, j, succeeded; NiggliParams *p; int (*steps[8])(NiggliParams *p) = {step1, step2, step3, step4, step5, step6, step7, step8}; p = NULL; succeeded = 0; if ((p = initialize(lattice_, eps_)) == NULL) { return 0; } /* Step 0 */ if (! set_parameters(p)) { goto ret; } for (i = 0; i < NIGGLI_MAX_NUM_LOOP; i++) { for (j = 0; j < 8; j++) { if ((*steps[j])(p)) { debug_show(j + 1, p); if (! reset(p)) {goto ret;} if (j == 1 || j == 4 || j == 5 || j == 6 || j == 7) {break;} } } if (j == 8) { succeeded = 1; break; } } debug_show(-1, p); ret: finalize(lattice_, p); return succeeded; }
void debug_knightrider() { static uint8_t dir = 0; static uint16_t state = 1; debug_show(state); if(dir == 0) state <<= 1; else state >>= 1; if(state == 0x0100) { state = 0x40; dir = 1; } else if(state == 0x00) { state = 0x02; dir = 0; } }
/* -----------------------------------------------------------------------------*/ LONG lCTRL_RequestResponse(CHAR* pcReq){ /* return */ LONG lRet=COMM_RET_SUCCESS; /* lFeedback from base process */ CHAR cFb[COMM_MAXPARAFEEDBACKCHAR]; CHAR* pc; CHAR* pcNext; /* parameter to udpate */ sCOMM_PARA* pstParas=gsParas; sCOMM_PARA stPara; /* request infomation */ LONG lReqInfo=0; LONG lReqRet=0; debug_show("\n\nrequestResponse start\n"); /* write to pipe */ vCOMM_Pipe_Write(&gsPipeCommand, pcReq); /* wait and handle the feedback */ while(1){ /* clear the buffer */ memset(cFb, 0,sizeof(cFb)); /* handle according to lFeedback */ vCOMM_Pipe_Read(&gsPipeFeedback, cFb); if( !strlen(cFb)){ debug_info("[lCTRL_RequestResponse] ERROR when lCOMM_Pipe_Read \n"); /* consider feedback */ vCTRL_Feedback(lReqInfo, CTRL_REQRESPONSE_FEEDBACKNOTFIRST, COMM_CF_FEEDBACKFINISHSUC); break; } /* get ret infomation */ pc=cFb; pcNext=index(pc, '&'); *pcNext='\0'; lReqRet=atol(pc); pc=pcNext+1; /* get reqId */ pcNext=index(pc, '&'); if(pcNext!=NULL){ *pcNext='\0'; } lReqInfo=atol(pc); if(pcNext!=NULL){ pc=pcNext+1; } /* handle according to ret and reqId */ if(lReqRet==0){ /* feedback at once */ CR_Debug("get back at once\n"); /* consider feedback */ vCTRL_Feedback(lReqInfo, CTRL_REQRESPONSE_FEEDBACKFIRST, COMM_CF_FEEDBACKATONCESUC); } else { if (lReqRet==-1) { /* system set failure */ CR_Debug("feed back error\n"); /* consider feedback */ vCTRL_Feedback(lReqInfo, CTRL_REQRESPONSE_FEEDBACKNOTFIRST, COMM_CF_FEEDBACKFINISHFAIL); } else if (lReqRet==-2){ /* system quit */ CR_Debug("feed back system quit\n"); /* feedback */ vCTRL_Feedback(lReqInfo, CTRL_REQRESPONSE_FEEDBACKNOTFIRST, COMM_CF_FEEDBACKFINISHSYSQUIT); lRet=COMM_RET_SYSQUIT; } else { /* system feedback ok */ CR_Debug("feed back ok\n"); /* feed back ok, should return the update parameters */ /* we should go through the parameters one by one */ while((pcNext=index(pc, '&'))!=NULL){ *pcNext='\0'; /* get the update parameter */ vCOMM_PARA_CharToPara(&stPara, pc); lCOMM_PARA_UpdateParas(&pstParas, &stPara); if(*++pcNext=='\0'){ /* indicate finished */ break; } /* update pc */ pc=pcNext; } /* consider feedback */ vCTRL_Feedback(lReqInfo, CTRL_REQRESPONSE_FEEDBACKNOTFIRST, COMM_CF_FEEDBACKFINISHSUC); } /* lFeedback finish */ break; } } debug_show("requestResponse stop\n"); return lRet; }