/** * @brief Adds a dot to a bit pattern representing a cell * @param char bits - Old bit pattern * @param char dot - Dot to add * @return char - New bit pattern */ char add_dot(char bits, char dot) { return (bits | 1 << (CHARTOINT(dot) - 1)); }
/** * @brief Creates a dialog with prompt and specified allowed user inputs * @param char* prompt - Pointer to filename for prompt to play - prefixed with * mode fileset * @param char control_mask - Controls to allow on dialog re: io.h for masks * @return char - Button corresponding to user input */ char create_dialog(char* prompt, char control_mask) { // Gets initialised on first call after a successful return or first run if (io_dialog_initialised == false) { log_msg("[IO] Creating dialog: %s\n\r", prompt); io_dialog_init(control_mask); } char last_dot = get_dot(); switch (last_dot) { // Returns NO_DOTS but also plays prompt when fresh call or after a certain // number of incorrect tries case NO_DOTS: if (io_dialog_incorrect_tries == -1) { play_mp3(mode_fileset, prompt); io_dialog_incorrect_tries++; } return NO_DOTS; break; // Returns dot if enabled, o/w registers error case '1': case '2': case '3': case '4': case '5': case '6': if (io_dialog_dots_enabled[CHARTOINT(last_dot) - 1] == true) { log_msg("[IO] Returning dot %c\n\r", last_dot); io_dialog_reset(); return last_dot; } else { io_dialog_error(); return NO_DOTS; } break; // Returns control button if enabled, o/w registers error case ENTER: case CANCEL: if (io_dialog_enter_cancel_enabled == true) { io_dialog_reset(); return last_dot; } else { io_dialog_error(); return NO_DOTS; } break; // Returns control button if enabled, o/w registers error case LEFT: case RIGHT: if (io_dialog_left_right_enabled == true) { io_dot = last_dot; io_dialog_reset(); return last_dot; } else { io_dialog_error(); return NO_DOTS; } break; // Should not get here default: log_msg("[IO] Invalid dot: %x\n\r", last_dot); quit_mode(); return NO_DOTS; break; } }
uint16_t CGPS9_03GetCnoValue(void) { char comd_code14[] = "#COMD 14 &C8\x0D\x0A#COMD 14 &C8\x0D\x0A#COMD 14 &C8\x0D\x0A#COMD 14 &C8\x0D\x0A#COMD 14 &C8\x0D\x0A"; uint32_t vl_readLen; uint32_t vl_index; int8_t a_readBuffer[4096]; uint8_t vl_attempt; bool vl_obtained = FALSE; uint8_t vl_COMD14attempt = 2; uint16_t vl_Cno = 0; /* ++ jaekuk80.lee 20090726 add variable for AT command */ if ( vg_CgpsATcommandActivated == FALSE ) /* start the chip */ MC_HALGPS_QUICK_START(); /* -- jaekuk80.lee 20090726 add variable for AT command */ while(vl_COMD14attempt > 0 && vl_Cno < 15) { /* send the Command to request the CNO */ GN_GPS_Write_GNB_Ctrl (sizeof(comd_code14) - 1, comd_code14); /* + RRR */ /* wait 50ms */ #ifdef __RTK_E__ #ifdef UTS_CPR MC_UTSER_SLEEP(UTSER_1MSEC_PRECISION,50); #else MC_OST_START_TASK_TIMER(50); #endif /* UTS_CPR */ #else OSA_Sleep( 50 ); #endif /* __RTK_E__ */ /* - RRR */ vl_attempt = 5; while(!vl_obtained && vl_attempt > 0) { vl_readLen = GN_GPS_Read_GNB_Meas(4096, (char *)a_readBuffer); if(vl_readLen < 4096) a_readBuffer[vl_readLen] = 0; else a_readBuffer[4095] = 0; if( vl_readLen != 0 ) { MC_CGPS_TRACE(("CGPS9_03GetCnoValue Read Data - <%s>" , a_readBuffer)); for(vl_index=0; vl_index<vl_readLen-2 && vl_readLen > 0; vl_index++) { if(a_readBuffer[vl_index]=='E' && a_readBuffer[vl_index+1]=='9' && a_readBuffer[vl_index+2]==' ') { vl_Cno = 16*CHARTOINT(a_readBuffer[vl_index+3]) + CHARTOINT(a_readBuffer[vl_index+4]); MC_CGPS_TRACE(("CGPS9_03GetCnoValue : Obtained CNo <%u>" , vl_Cno )); vl_obtained = TRUE; } } } else { MC_CGPS_TRACE(("CGPS9_03GetCnoValue No Data Read!" , a_readBuffer)); } /* + RRR */ /* wait 50ms */ #ifdef __RTK_E__ #ifdef UTS_CPR MC_UTSER_SLEEP(UTSER_1MSEC_PRECISION,50); #else MC_OST_START_TASK_TIMER(50); #endif /* UTS_CPR */ #else OSA_Sleep( 50 ); #endif /* __RTK_E__ */ /* - RRR */ vl_attempt--; } vl_COMD14attempt--; /* if the chip doesn't answer, we must reset it */ if(vl_attempt == 0 && !vl_obtained && vl_COMD14attempt > 0) { MC_HALGPS_QUICK_STOP(); MC_HALGPS_QUICK_START(); } } /* ++ jaekuk80.lee 20090726 add variable for AT command */ if ( vg_CgpsATcommandActivated == FALSE ) /* the chip must be reset after this operation */ MC_HALGPS_QUICK_STOP(); /* -- jaekuk80.lee 20090726 add variable for AT command */ return vl_Cno; }