bool MountDevices (bool silent) { cbsilent = silent; if (vars.ios > 200 || vars.neek == NEEK_USB) devices_Mount (DEVMODE_CIOSX, 0 /*vars.neek*/, vars.usbtime, cb_Mount); else devices_Mount (DEVMODE_IOS, 0 /*vars.neek*/, vars.usbtime, cb_Mount); bool cfgSD = false, cfgUSB = false; // First try to mount SD if (devices_Get (DEV_SD)) { // Try to load configuration file... maybe a user have choosen to use the SD as primary device for postLoader SetDefMount (DEV_SD); cfgSD = ConfigRead (); } // Contine with next device if (!extConfig.disableUSB) { if (devices_Get (DEV_USB) && !cfgSD) { SetDefMount (DEV_USB); cfgUSB = ConfigRead (); } } if (cfgSD || cfgUSB) // we have a valid device return TRUE; return false; }
void BootConfigRead(void) { #ifdef EE_CONFNET DEBUG("CONFNET "); if (ConfigGet(EE_CONFNET) == sizeof(CONFNET)) { DEBUG("OK\n"); ConfigRead(EE_CONFNET, &confnet, sizeof(CONFNET)); #ifdef EE_CONFBOOT DEBUG("CONFBOOT "); if (ConfigGet(EE_CONFBOOT) == sizeof(CONFBOOT)) { DEBUG(" OK\n"); ConfigRead(EE_CONFBOOT, &confboot, sizeof(CONFBOOT)); } else { DEBUG("No\n"); } #endif } else { DEBUG("No\n"); } #endif }
static int InitClient( cOpenHpiClientConf *c ) { assert( c->m_client_connection == 0 ); c->m_num_sessions = 0; c->m_client_connection = 0; c->m_lock = lock_tmpl; c->m_queue = 0; int i; for( i = 0; i < 256; i++ ) c->m_outstanding[i] = 0; c->m_num_outstanding = 0; c->m_current_seq = 0; c->m_thread_state = eOpenHpiClientThreadStateSuspend; c->m_thread_exit = 0; #ifdef dOpenHpiClientWithConfig char *openhpi_client_conf = getenv( "OPENHPICLIENT_CONF" ); if ( openhpi_client_conf == 0 ) openhpi_client_conf = OH_CLIENT_DEFAULT_CONF; ConfigRead( openhpi_client_conf, config_table, c ); #endif c->m_client_connection = ClientConnectionOpen( c->m_server, c->m_port ); if ( !c->m_client_connection ) return 0; // start reader thread int rv = pthread_create( &c->m_thread, 0, ReaderThread, c ); if ( rv ) return 0; // wait till real thread start while( c->m_thread_state == eOpenHpiClientThreadStateSuspend ) // wait 100 ms usleep( 10000 ); return 1; }
static void pageList(void) { char buff[(LCDCOL - 3) * 2]; char buff2[LCDCOL * 2]; uint8_t currs; uint8_t fstart; dispStaticDraw(0); //рисуем статику switch (fileData[0]) { case T_FOLDER: //обычная папка.. if ((brCrumbs[level][1] & LCDINVBITS)== ((fileData[2]) & LCDINVBITS))currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице else currs = LCDBITS; fstart = fileData[1] + (brCrumbs[level][1] & LCDINVBITS);//номер файла для старта вывода. for (uint8_t i = 0; i <= currs; i++) {//пишем из массива для статических папок text_print(i + 1, 0, (PGM_P) pgm_read_word(&fileNames[i + fstart]), ((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF); } break; case T_DFOLDER: //динамическая папка if ((brCrumbs[level][1] & LCDINVBITS) == ((fileData[2]) & LCDINVBITS)) currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице else currs = LCDBITS; strncpy_P(buff, (char*) pgm_read_word(&(fileNames[fileData[1]])), sizeof(buff));//читаем общее название buff[sizeof(buff) - 1] = '\0'; for (uint8_t i = 0; i <= currs; i++) { snprintf(buff2, sizeof(buff2), "%s %d", buff, (brCrumbs[level][1] & LCDINVBITS) + i); buff_print(i + 1, 0, buff2, ((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF); } break; case T_SFOLDER: //папка выбора параметра { uint8_t config_folder_view = pgm_read_byte( &fileStruct[FILEREW * fileData[1] + 1]);//читаем байт сдвига. uint8_t config_folder_data = ConfigRead( /*brCrumbs[level][0]+*/config_folder_view);//чтение значения выбора if (config_folder_data > fileData[2]) config_folder_data = fileData[2]; if (config_folder_view < 0) config_folder_view = 0; if (brCrumbs[level][2] == 0) { brCrumbs[level][1] = config_folder_data;//ставим курсор в выбранную позицию. brCrumbs[level][2] = 1; } if ((brCrumbs[level][1] & LCDINVBITS) == ((fileData[2]) & LCDINVBITS)) currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице else currs = LCDBITS; fstart = fileData[1] + (brCrumbs[level][1] & LCDINVBITS);//номер файла для старта вывода. for (uint8_t i = 0; i <= currs; i++) { //пишем из массива для статических папок text_print(i + 1, 0, (PGM_P) pgm_read_word(&fileNames[i + fstart]), ((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF); } } break; } dispHead(header); // stringSelect(); }
.m_default.m_int = 13 }, { .m_name = "string", .m_type = eConfigTypeString, .m_offset = dConfigOffset( cTest, m_string ), .m_default.m_string = "default string" }, { .m_type = eConfigTypeUnknown } }; cTest t; int rv = ConfigRead( "config_000.conf", table, &t ); if ( rv ) return 1; if ( t.m_bool != 0 ) return 1; if ( t.m_int != 14 ) return 1; if ( strcmp( t.m_string, "test string" ) ) return 1; return 0; }