コード例 #1
0
ファイル: common.c プロジェクト: TechBridgeWorld/SABTSoftware
/**
 * @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));
}
コード例 #2
0
ファイル: io.c プロジェクト: SusanZuo/SABTSoftware
/**
* @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;
	}
}
コード例 #3
0
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;
}