INT IsChargingOrFull() { int i=0; int nState = 0; stGPIOInfo stGPIOInfo; if(NULL==v_p2450IOP){ // v_p2450IOP = (S3C2450_IOPORT_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_IOPORT, FALSE); DPN(0); return -1; } // get stGPIOInfo.u32PinNo = CH_nFULL; GetGPIOInfo(&stGPIOInfo, v_p2450IOP); EPRINT(L"CH_nFULL=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); if(stGPIOInfo.u32Stat) { nState = BAT_CHARGING_STAT; DPSTR("Charging!!"); }else{ nState = BAT_FULL_STAT; DPSTR("FULL!!"); } return nState; }
// CHARGER IN=true, FARR==1 --- USB CABLE // CHARGER IN=true, FARR==0 --- ADAPTER int IsWhichChargerConnected() { int nRet = 0; //[david.modify] 2008-05-23 11:53 nRet = IsChargerIn(); if(!nRet) { DPNOK(nRet); return NO_CHARGER; } if(v_pUSBCtrlAddr==NULL) { // v_pUSBCtrlAddr=(S3C2450_USBD_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_USBD, FALSE); DPN(0); return ERR_CHARGER; } // PrintMsg(v_pUSBCtrlAddr, sizeof(S3C2450_USBD_REG)/sizeof(UINT32), sizeof(UINT32)); DPNOK(v_pUSBCtrlAddr->FARR); if(v_pUSBCtrlAddr->FARR&0X7F) { nRet=USB_CHARGER; //接PC USB后,v_pUSBCtrlAddr->FARR=1 DPSTR("USB CABLE!"); }else { nRet=ADAPTER_CHAGER; DPSTR("ADAPTER!"); } DPNOK(nRet); return nRet; }
// this routine takes the battery mutex DWORD LockBattery(void) { DWORD dwStatus; SETFNAME(_T("LockBattery")); DPSTR("+LockBattery"); DEBUGCHK(ghMutex != NULL); dwStatus = WaitForSingleObject(ghMutex, MUTEX_TIMEOUT); if(dwStatus == WAIT_OBJECT_0) { dwStatus = ERROR_SUCCESS; } else { dwStatus = GetLastError(); DEBUGCHK(dwStatus != ERROR_SUCCESS); } DEBUGMSG(dwStatus != ERROR_SUCCESS && ZONE_WARN, (_T("%s: WaitForSingleObject() failed %d\r\n"), TEXT(__FUNCTION__), GetLastError())); DEBUGCHK(dwStatus == ERROR_SUCCESS); DPSTR("-LockBattery"); return dwStatus; }
UCHAR BspGetBatteryFlag (void) { // return PDD_BATTERY_ON; if(BspBatteryDetect()) { if(BspChargerDetect()) { if(BAT_FULL_STAT==IsChargingOrFull()) { DPSTR("PDD_BATTERY_EOC"); return PDD_BATTERY_EOC; } DPSTR("PDD_BATTERY_CHARGING"); return PDD_BATTERY_CHARGING; } else{ DPSTR("PDD_BATTERY_ON"); return PDD_BATTERY_ON; } } else { DPSTR("PDD_NO_BATTERY"); return PDD_NO_BATTERY; } }//endof BspGetBatteryStatus
INT IsChargerIn() { int i=0; int nState = 0; stGPIOInfo stGPIOInfo; if(NULL==v_p2450IOP){ // v_p2450IOP = (S3C2450_IOPORT_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_IOPORT, FALSE); DPN(0); return 0; } // get EPRINT(L"==USB IO==\r\n"); stGPIOInfo.u32PinNo = USB_DET; GetGPIOInfo(&stGPIOInfo, v_p2450IOP); EPRINT(L"USB_DET=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); if(stGPIOInfo.u32Stat) { //高电平 nState = 0; }else{ nState = 1; // 低电,表示检测到有USB 或adapter } stGPIOInfo.u32PinNo = CH_nFULL; GetGPIOInfo(&stGPIOInfo, v_p2450IOP); EPRINT(L"CH_nFULL=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); stGPIOInfo.u32PinNo = CH_CON; GetGPIOInfo(&stGPIOInfo, v_p2450IOP); EPRINT(L"CH_nFULL=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); stGPIOInfo.u32PinNo = PWREN_USB; GetGPIOInfo(&stGPIOInfo, v_p2450IOP); EPRINT(L"PWREN_USB=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); DPNOK(nState); if(nState) DPSTR("CHARGER IN!"); else DPSTR("CHARGER OUT!"); return nState; }
int sql_view_info(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } /* check log_type */ char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } sprintf(query_line, "select * from users where name='%s'", req->buddy_name); DS(query_line); int ret = sqlite3_exec(db, query_line, sql_get_info_cb, wbuf, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } cs_free(&query_line); D(GREEN"view %s info success.", req->buddy_name); return 0; }
/************************************************************************************* // Function: BspBattDeallocResource // Purpose:dellloc resource for battery driver // Returns: N/A //***********************************************************************************/ void BspBattDeallocResource( void) { DPNOK(0); DeinitPinMuxMutex(g_hADCMutex); g_hADCMutex = NULL; g_bLedThreadExit = TRUE; if(g_hevLEDStatus) CloseHandle(g_hevLEDStatus); g_hevLEDStatus = NULL; if(g_hNotifyLedThread) CloseHandle(g_hNotifyLedThread); g_hNotifyLedThread = NULL; if (g_hevBatteryStatus) CloseHandle(g_hevBatteryStatus); g_hevBatteryStatus = NULL; #if 1 DPSTR("MmUnmapIoSpace"); MmUnmapIoSpace(g_pBspArgs, sizeof(BSP_ARGS)); MmUnmapIoSpace(v_p2450IOP, sizeof(S3C2450_IOPORT_REG)); MmUnmapIoSpace(v_pADCregs, sizeof(S3C2450_ADC_REG)); MmUnmapIoSpace(v_pUSBCtrlAddr, sizeof(S3C2450_USBD_REG)); #endif // BspPowerStatesManagerDeInit(); // CspRegUnMap(); }//endof BspBatDeallocResource
/* view user info */ int sql_get_info_cb(void *p, int argc, char **value, char **name) { buf_t *wbuf = (buf_t *)p; sprintf(wbuf->data + wbuf->len, ":%s:%s:%s", value[4], value[5], value[6]); wbuf->len = strlen(wbuf->data); DPSTR(wbuf); return 0; }
/************************************************************************************* // Function: BspPowerHandleOff // Purpose: Deinit bus which shutdhow when enter sleep // Returns: no Return //***********************************************************************************/ void BspPowerHandleOff(VOID) { DPSTR("BspPowerHandleOff"); BspNotifyLed(FALSE); BatCriticalLowWaitCount=0; }
/************************************************************************************* // Function: BspPowerHandleON // Purpose: Init bus which shutdhow when enter sleep // Returns: no Return //***********************************************************************************/ void BspPowerHandleOn(VOID) { DPSTR("BspPowerHandleOn"); BspBattModuleConfig(); BspFuelGaugeResetBatStatusInPercent(); }
/* view log */ int sql_get_log_cb(void *p, int argc, char **value, char **name) { buf_t *wbuf = (buf_t *)p; sprintf(wbuf->data + wbuf->len, ":%s-%s-%s", value[1], value[3], value[2]); wbuf->len = strlen(wbuf->data); DPSTR(wbuf); return 0; }
/* change passwd */ int sql_change_passwd(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->passwd == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } /* check identify */ sprintf(query_line, "select * from users where name='%s' and passwd='%s'", req->name, req->passwd); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_identity_cb, &sql_select_num, NULL); if (ret != SQLITE_OK || sql_select_num != 1) { /* no this user & passwd */ E("sqlite3_exec() failed."); DD(sql_select_num); cs_free(&query_line); strncpy(wbuf->data, "err", 3); wbuf->len = 3; return -1; } /* update user info in users table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "update users set passwd='%s' where name='%s'", req->content, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); strncpy(wbuf->data, "err", 3); wbuf->len = 3; return -1; } strncpy(wbuf->data, "ok", 2); wbuf->len = 2; cs_free(&query_line); D(GREEN"user %s change passwd success.", req->name); return 0; }
/* del log */ int sql_del_log(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } /* check log_type */ sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int log_type = -1; int ret = sqlite3_exec(db, query_line, sql_log_type_cb, &log_type, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); DD(log_type); cs_free(&query_line); return -1; } /* empty offline table message */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "delete from %s_%s", req->name, req->buddy_name); else if (log_type == 1) sprintf(query_line, "delete from %s_%s", req->buddy_name, req->name); else DD(log_type); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } strncpy(wbuf->data, "ok", 2); wbuf->len = 2; cs_free(&query_line); D(GREEN"clear log with %s success.", req->buddy_name); return 0; }
// this routine releases the battery mutex DWORD UnlockBattery(void) { DWORD dwStatus = ERROR_SUCCESS; BOOL fOk; SETFNAME(_T("UnlockBattery")); DPSTR("+UnlockBattery"); DEBUGCHK(ghMutex != NULL); fOk = ReleaseMutex(ghMutex); if(!fOk) { dwStatus = GetLastError(); DEBUGCHK(dwStatus != ERROR_SUCCESS); } DEBUGMSG(dwStatus != ERROR_SUCCESS && ZONE_WARN, (_T("%s: ReleaseMutex() failed %d\r\n"), TEXT(__FUNCTION__), GetLastError())); DEBUGCHK(dwStatus == ERROR_SUCCESS); DPSTR("-UnlockBattery"); return dwStatus; }
int sql_logout(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } /* update user info in users table */ sprintf(query_line, "update users set fd=-1 where name='%s'", req->name); DS(query_line); int ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* notice all buddy */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "select %s.name, users.fd from %s,users where %s.name=users.name", req->name, req->name, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, sql_notice_buddy_cb, req->name, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } strncpy(wbuf->data, "ok", 2); wbuf->len = 2; cs_free(&query_line); /* * find mine fd, fd_clr and close fd. * free mine wrbuf * on L171 cs_server.c where n == 0 */ return 0; }
int sql_submit_info(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->content == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } user_info_t info = cs_parse_info(req->content); if (info.email == NULL || info.phone == NULL || info.tel == NULL) { E("cs_parse_info() failed."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); user_info_free(&info); return -1; } /* update user info in users table */ sprintf(query_line, "update users set email='%s',phone='%s',tel='%s' where name='%s'", info.email, info.phone, info.tel, req->name); DS(query_line); int ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); user_info_free(&info); return -1; } strncpy(wbuf->data, "ok", 2); wbuf->len = 2; cs_free(&query_line); user_info_free(&info); D(GREEN"change user %s info success.", req->name); return 0; }
int sql_view_user(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } /* check identify */ char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } sprintf(query_line, "select * from users"); DS(query_line); int ret = sqlite3_exec(db, query_line, sql_view_user_cb, wbuf, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } //DPSTR(wbuf); /* user haven't buddy */ if (wbuf->len == 0) { D(YELLOW"nothing in users table."NO); cs_free(&query_line); return -1; } cs_free(&query_line); D(GREEN"view all users success."NO); return 0; }
/******************************************************************************** //ACLineStatus -- 0 Offline 1 Online 255 Unknown status // // //*******************************************************************************/ BOOL WINAPI BatteryPDDGetStatus( PSYSTEM_POWER_STATUS_EX2 pstatus, PBOOL pfBatteriesChangedSinceLastCall) { BOOL fOk = TRUE; SYSTEM_POWER_STATUS_EX2 sps; BOOL ACStatus=FALSE; UCHAR ucBatteryPer = 0; UINT32 BATTERY_AUTOSLEEP_VOLTAGE_PERCENT ; UINT32 PERCENT_CRITICAL2LOW; BATTERY_AUTOSLEEP_VOLTAGE_PERCENT= ( (g_stBattParam.u32AutoSleepVbat - BATTERY_MIN_VOLTAGE)* 100/(BATTERY_MAX_VOLTAGE - BATTERY_MIN_VOLTAGE)+1) ; PERCENT_CRITICAL2LOW = BATTERY_AUTOSLEEP_VOLTAGE_PERCENT + 4; DPNOK(BATTERY_AUTOSLEEP_VOLTAGE_PERCENT); DPNOK(PERCENT_CRITICAL2LOW); SETFNAME(_T("BatteryPDDGetStatus")); RETAILMSG(ZONE_REG_PRINT, (TEXT("+BatteryPDDGetStatus... \r\n"))); DEBUGCHK(pstatus != NULL); DEBUGCHK(pfBatteriesChangedSinceLastCall != NULL); /* Fill ACLineStatus part */ sps.ACLineStatus = AC_LINE_UNKNOWN; if(BspGetACStatus()) { sps.ACLineStatus = AC_LINE_ONLINE; } else { sps.ACLineStatus = AC_LINE_OFFLINE; } /* Fill Battery status part */ battery_status = BspGetBatteryFlag(); if (PDD_NO_BATTERY == battery_status ) { BspNotifyLed(FALSE); sps.BatteryFlag = BATTERY_FLAG_NO_BATTERY; sps.BatteryLifePercent = BATTERY_PERCENTAGE_UNKNOWN; } else if (PDD_BATTERY_CHARGING == battery_status ) { RETAILMSG(ZONE_REG_PRINT, (TEXT("+Battery status PDD_BATTERY_CHARGING... \r\n"))); BspFuelGaugeResetBatStatusInPercent(); BspNotifyLed(FALSE); sps.BatteryFlag = BATTERY_FLAG_CHARGING; sps.BatteryLifePercent = BATTERY_PERCENTAGE_UNKNOWN; // //[david.modify] 2008-05-31 14:49 // ڴ˴óʱҲʾٷֱ //======================================================= if(CHARGING_BIT&g_stBattParam.u32Debug) { ucBatteryPer = BspFuelGaugeGetBatStatusInPercent(); if(ucBatteryPer >= PERCENT_CRITICAL2LOW) { sps.BatteryFlag = BATTERY_FLAG_HIGH; BspNotifyLed(FALSE); } else if (( ucBatteryPer <PERCENT_CRITICAL2LOW) && (ucBatteryPer >=BATTERY_AUTOSLEEP_VOLTAGE_PERCENT)) { sps.BatteryFlag = BATTERY_FLAG_LOW; BspNotifyLed(TRUE); } else if(ucBatteryPer<=BATTERY_AUTOSLEEP_VOLTAGE_PERCENT) { sps.BatteryFlag = BATTERY_FLAG_CRITICAL; BspNotifyLed(TRUE); } sps.BatteryLifePercent = ucBatteryPer; } //======================================================= } else { if(PDD_BATTERY_EOC == battery_status) { RETAILMSG(0, (TEXT("+Battery status PDD_BATTERY_EOC... \r\n"))); BspFuelGaugeResetBatStatusInPercent(); BspNotifyLed(FALSE); sps.BatteryFlag = BATTERY_FLAG_HIGH; sps.BatteryLifePercent = 100; } //end if PDD_BATTERY_EOC == battery_status else { RETAILMSG(0, (TEXT("+Get Battery status PDD_BATTERY_ON... \r\n"))); ucBatteryPer = BspFuelGaugeGetBatStatusInPercent(); if(ucBatteryPer >= PERCENT_CRITICAL2LOW) { ///// //Awisc.Chen add 2008-07-14 18:36 start #if 0//awisc add for test DPSTR("ucBatteryPer >= 20"); sps.BatteryFlag = BATTERY_FLAG_CRITICAL; BspNotifyLed(TRUE); //[david.modify] 2008-05-31 14:39 if(g_stBattParam.u32LowPowerSleep) { BspBattCriticalLow();} #endif ///// //Awisc.Chen add 2008-07-14 18:35 end sps.BatteryFlag = BATTERY_FLAG_HIGH; //Awisc.Chen delete 2008-07-14 18:36 BspNotifyLed(FALSE); //Awisc.Chen delete 2008-07-14 18:36 } else if (( ucBatteryPer <PERCENT_CRITICAL2LOW) && (ucBatteryPer >=BATTERY_AUTOSLEEP_VOLTAGE_PERCENT)) { sps.BatteryFlag = BATTERY_FLAG_LOW; BspNotifyLed(TRUE); } else if(ucBatteryPer<=BATTERY_AUTOSLEEP_VOLTAGE_PERCENT) { DPSTR("BATTERY_FLAG_CRITICAL"); sps.BatteryFlag = BATTERY_FLAG_CRITICAL; BspNotifyLed(TRUE); //[david.modify] 2008-05-31 14:39 if(g_stBattParam.u32LowPowerSleep) { BspBattCriticalLow(); } } sps.BatteryLifePercent = ucBatteryPer; } //end else PDD_BATTERY_ONLY }//end else PDD_BATTERY_CHARGING == battery_status sps.Reserved1 = 0; sps.BatteryLifeTime = BATTERY_LIFE_UNKNOWN; sps.BatteryFullLifeTime = BATTERY_LIFE_UNKNOWN; sps.Reserved2 = 0; sps.BackupBatteryFlag = BATTERY_FLAG_UNKNOWN; sps.BackupBatteryLifePercent = 0; sps.Reserved3 = 0; sps.BackupBatteryLifeTime = BATTERY_LIFE_UNKNOWN; sps.BackupBatteryFullLifeTime = BATTERY_LIFE_UNKNOWN; sps.BatteryChemistry = BATTERY_CHEMISTRY_LIPOLY; // sps.BatteryVoltage = (unsigned long) (voltage_percent * 4.1); ; sps.BatteryCurrent = 0; sps.BatteryAverageCurrent = 0; sps.BatteryAverageInterval = 0; sps.BatterymAHourConsumed = 0; sps.BatteryTemperature = 0;//temperature; sps.BackupBatteryVoltage = 0; memcpy(&gpStatus->sps, &sps, sizeof(gpStatus->sps)); // get battery status information from the shared structure LockBattery(); memcpy(pstatus, &gpStatus->sps, sizeof(*pstatus)); *pfBatteriesChangedSinceLastCall = gpStatus->fChanged; if(*pfBatteriesChangedSinceLastCall) { gpStatus->fChanged = FALSE; // reset changed flag if it's set } UnlockBattery(); DEBUGMSG(ZONE_PDD, (_T("%s: returning %d\r\n"), TEXT(__FUNCTION__), fOk)); return (fOk); }
void BspBattCriticalLow( void) { DPSTR("endter BspBattCriticalLow"); if(BatCriticalLowWaitCount <BATTERY_CRITICAL_WAITING) { RETAILMSG(ZONE_BATT, (TEXT("++WARNING::BatteryCriticalLow !!!\r\n"))); BatCriticalLowWaitCount++; } else { BatCriticalLowWaitCount =0; // if (!g_oalSysInfo.apmInfo.bEnabled) //[david.modify] 2008-05-23 15:31 if(1) { RETAILMSG(ZONE_BATT, (TEXT("++BatteryCriticalLow enter sleep\r\n"))); if(!(BspAdapterDetect()||BspUSBChargerDetect())) { //================================================ //Awisc.Chen add 2008-07-14 18:10 start //[david.modify] 2008-08-18 09:33 #if 0 DPSTR("endter event"); DPNOK(g_hEvent); g_hEvent = CreateEvent(NULL , FALSE , FALSE , EVENT_OVL); DPNOK(g_hEvent); if(g_hEvent != INVALID_HANDLE_VALUE) { SetEventData(g_hEvent , BITMAP_LOWBAT_ID); //显示图片 SetEvent (g_hEvent); g_hEvent2 = CreateEvent(NULL , FALSE , FALSE , EVENT_OVL_END); DPNOK(g_hEvent2); if(g_hEvent2 != INVALID_HANDLE_VALUE) { DPNOK(g_hEvent2); WaitForSingleObject(g_hEvent2, 10000); //等待10s等待显示完毕 SetEventData(g_hEvent , BITMAP_HIDE_ID); //隐藏图片 SetEvent (g_hEvent); WaitForSingleObject(g_hEvent2, 10000); //等待10s 等待隐藏完毕//用时40MS CloseHandle(g_hEvent2); g_hEvent2 = NULL; } CloseHandle(g_hEvent); g_hEvent = NULL; } #else DPSTR("+BITMAP_LOWBAT_ID"); SendOvlEvent(BITMAP_LOWBAT_ID); DPSTR("-BITMAP_LOWBAT_ID"); Sleep(2000); // 关背光 OEM_IOCTL_Backlight_ONOFF(0); DPSTR("+BITMAP_HIDE_ID"); SendOvlEvent(BITMAP_HIDE_ID); DPSTR("-BITMAP_HIDE_ID"); Sleep(150); #endif //================================================//Awisc.Chen add 2008-07-14 18:10 end ForceEnterSleep(); } }else { //notify the APM driver if (g_hevBatteryStatus) { SetEventData(g_hevBatteryStatus, BatteryLow); SetEvent(g_hevBatteryStatus); } } } }
/* special constants */ #if (defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN) || defined(__MIPSEL__) #define SPSTR(s,b,m) {m,b,s} #define DPSTR(s,b,mh,ml) {ml,mh,b,s} #endif #ifdef __MIPSEB__ #define SPSTR(s,b,m) {s,b,m} #define DPSTR(s,b,mh,ml) {s,b,mh,ml} #endif const struct ieee754dp_konst __ieee754dp_spcvals[] = { DPSTR(0, DP_EMIN - 1 + DP_EBIAS, 0, 0), /* + zero */ DPSTR(1, DP_EMIN - 1 + DP_EBIAS, 0, 0), /* - zero */ DPSTR(0, DP_EBIAS, 0, 0), /* + 1.0 */ DPSTR(1, DP_EBIAS, 0, 0), /* - 1.0 */ DPSTR(0, 3 + DP_EBIAS, 0x40000, 0), /* + 10.0 */ DPSTR(1, 3 + DP_EBIAS, 0x40000, 0), /* - 10.0 */ DPSTR(0, DP_EMAX + 1 + DP_EBIAS, 0, 0), /* + infinity */ DPSTR(1, DP_EMAX + 1 + DP_EBIAS, 0, 0), /* - infinity */ DPSTR(0, DP_EMAX + 1 + DP_EBIAS, 0x40000, 0), /* + indef quiet Nan */ DPSTR(0, DP_EMAX + DP_EBIAS, 0xFFFFF, 0xFFFFFFFF), /* + max */ DPSTR(1, DP_EMAX + DP_EBIAS, 0xFFFFF, 0xFFFFFFFF), /* - max */ DPSTR(0, DP_EMIN + DP_EBIAS, 0, 0), /* + min normal */ DPSTR(1, DP_EMIN + DP_EBIAS, 0, 0), /* - min normal */ DPSTR(0, DP_EMIN - 1 + DP_EBIAS, 0, 1), /* + min denormal */ DPSTR(1, DP_EMIN - 1 + DP_EBIAS, 0, 1), /* - min denormal */ DPSTR(0, 31 + DP_EBIAS, 0, 0), /* + 1.0e31 */
INT IsChargerIn() { int i=0; int nState = 0; stGPIOInfo stGPIOInfo; if(NULL==g_pIOPort){ // v_p2450IOP = (S3C2450_IOPORT_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_IOPORT, FALSE); DPN(0); return 0; } g_pIOPort->GPFCON =0x55555566; // ½«USBÉèÖóÉÖжÏGPF2 g_pIOPort->GPFDAT = 0x0; g_pIOPort->GPFUDP = 0x0; // disable pull-up/down // get EPRINT(L"==USB IO==\r\n"); stGPIOInfo.u32PinNo = USB_DET; // Sleep(1); delayLoop(1*LCD_DELAY_1MS); GetGPIOInfo(&stGPIOInfo, g_pIOPort); EPRINT(L"USB_DET=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); if(stGPIOInfo.u32Stat) { //¸ßµçƽ nState = 0; }else{ nState = 1; // µÍµç,±íʾ¼ì²âµ½ÓÐUSB »òadapter } #if 0 stGPIOInfo.u32PinNo = CH_nFULL; GetGPIOInfo(&stGPIOInfo, g_pIOPort); EPRINT(L"CH_nFULL=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); stGPIOInfo.u32PinNo = CH_CON; GetGPIOInfo(&stGPIOInfo, g_pIOPort); EPRINT(L"CH_nFULL=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); stGPIOInfo.u32PinNo = PWREN_USB; GetGPIOInfo(&stGPIOInfo, g_pIOPort); EPRINT(L"PWREN_USB=%d: [%d %d %d] \r\n", stGPIOInfo.u32PinNo, stGPIOInfo.u32Stat, stGPIOInfo.u32AltFunc, stGPIOInfo.u32PullUpdown); #endif DPNOK(nState); if(nState) DPSTR("CHARGER IN!"); else DPSTR("CHARGER OUT!"); return nState; }
int sql_destroy(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { // FIXME: req->passwd if (req == NULL || req->name == NULL || req->passwd == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } // FIXME: root del user, user del himself /* check identify */ sprintf(query_line, "select * from users where name='%s' and passwd='%s'", req->name, req->passwd); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_identity_cb, &sql_select_num, NULL); if (ret != SQLITE_OK || sql_select_num != 1) { /* no this user & passwd */ E("sqlite3_exec() failed."); DD(sql_select_num); cs_free(&query_line); strncpy(wbuf->data, "*", 1); wbuf->len = 1; return -1; } /* delete user info in users table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "delete from users where name='%s'", req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* delete user info in buddy tables and name_buddy table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "select * from %s", req->name); DS(query_line); destroy_t dt = {db, req->name}; ret = sqlite3_exec(db, query_line, sql_del_info_buddy_cb, &dt, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* drop user table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "drop table %s", req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* drop user_offline table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "drop table %s_offline", req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } strncpy(wbuf->data, "ok", 2); wbuf->len = 2; cs_free(&query_line); D(GREEN"user %s destroy success.", req->name); return 0; }
int sql_login(int fd, cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->passwd == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL || wbuf->len != 0) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } /* check identify */ sprintf(query_line, "select * from users where name='%s' and passwd='%s'", req->name, req->passwd); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_identity_cb, &sql_select_num, NULL); if (ret != SQLITE_OK || sql_select_num != 1) { /* no this user & passwd */ E("sqlite3_exec() failed."); DD(sql_select_num); cs_free(&query_line); return -1; } /* update user info in users table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "update users set fd=%d where name='%s'", fd, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* get buddy name list */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "select %s.name, users.fd from %s,users where %s.name=users.name", req->name, req->name, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, sql_get_buddy_cb, wbuf, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } DPSTR(wbuf); strncpy(wbuf->data + wbuf->len, "*", 1); wbuf->len += 1; DPSTR(wbuf); /* get offline table message */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "select * from %s_offline", req->name); DS(query_line); ret = sqlite3_exec(db, query_line, sql_offline_message_cb, wbuf, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } DPSTR(wbuf); /* empty offline table message */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "delete from %s_offline", req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* haven't buddy and offline message */ if (wbuf->len == 0) { D(GREEN"user %s login failed.", req->name); cs_free(&query_line); return -1; } cs_free(&query_line); D(GREEN"user %s login success.", req->name); return 0; }
int sql_view_log(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } /* check log_type */ char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int log_type = -1; int ret = sqlite3_exec(db, query_line, sql_log_type_cb, &log_type, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); DD(log_type); cs_free(&query_line); return -1; } /* get log content */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "select * from %s_%s", req->name, req->buddy_name); else if (log_type == 1) sprintf(query_line, "select * from %s_%s", req->buddy_name, req->name); else DD(log_type); DS(query_line); ret = sqlite3_exec(db, query_line, sql_get_log_cb, wbuf, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); E("the log table isn't exist."); strncpy(wbuf->data, "00", 2); wbuf->len = 2; cs_free(&query_line); return -1; } if (wbuf->len == 0) { strncpy(wbuf->data, ":99:nolog", 9); wbuf->len = 9; } cs_free(&query_line); if (log_type == 0) { D(GREEN"view log %s-%s success.", req->name, req->buddy_name); } else { D(GREEN"view log %s-%s success.", req->buddy_name, req->name); } return 0; }
int sql_sendto(int fd, cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } /* check relationship */ sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_relationship_cb, &sql_select_num, NULL); if (ret == SQLITE_OK && sql_select_num == 0) { D(GREEN"%s and %s isn't buddy."NO, req->buddy_name, req->name); cs_free(&query_line); return -1; } /* check log_type */ int log_type = -1; ret = sqlite3_exec(db, query_line, sql_log_type_cb, &log_type, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } #if 0 /* check log table whether exist */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "select * from %s_%s", req->name, req->buddy_name); else if (log_type == 1) sprintf(query_line, "select * from %s_%s", req->buddy_name, req->name); else DD(log_type); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { /* the table isn't exist, create it */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "create table %s_%s(id integer primary key, name text, content text, datetime text)", req->name, req->buddy_name); else sprintf(query_line, "create table %s_%s(id integer primary key, name text, content text, datetime text)", req->buddy_name, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } } #endif /* update log table */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "insert into %s_%s(name, content, datetime) values('%s', '%s', '%s')", req->name, req->buddy_name, req->name, req->content, req->datetime); else if (log_type == 1) sprintf(query_line, "insert into %s_%s(name, content, datetime) values('%s', '%s', '%s')", req->buddy_name, req->name, req->name, req->content, req->datetime); else DD(log_type); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* sendto buddy fd */ int buddy_fd = sql_find_buddy_fd(req, db); if (buddy_fd < 0) { /* buddy offline, sendto message to buddy_offline table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "insert into %s_offline(name, content, datetime) values('%s', '%s', '%s')", req->buddy_name, req->name, req->content, req->datetime); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } E("%s is offline, he/she will see the message when login.", req->buddy_name) strncpy(wbuf->data, "88", 2); wbuf->len = 2; cs_free(&query_line); return -1; } ret = write(buddy_fd, req->content, strlen(req->content)); if (ret == -1) { E(YELLOW"%d send %s to %d failed."NO, fd, req->content, buddy_fd); E("%s", strerror(errno)); strncpy(wbuf->data, "err", 3); wbuf->len = 3; } else { D(YELLOW"%d send %s to %d success."NO, fd, req->content, buddy_fd); strncpy(wbuf->data, "ok", 2); wbuf->len = 2; } cs_free(&query_line); return 0; }
int sql_del_buddy(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } /* check relationship */ char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_relationship_cb, &sql_select_num, NULL); if (ret == SQLITE_OK && sql_select_num == 0) { D(GREEN"%s and %s isn't buddy."NO, req->buddy_name, req->name); cs_free(&query_line); return -1; } /* update mine table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "delete from %s where name='%s'", req->name, req->buddy_name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* update mine table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "delete from %s where name='%s'", req->buddy_name, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* check log_type */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int log_type = -1; ret = sqlite3_exec(db, query_line, sql_log_type_cb, &log_type, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* delete log table */ memset(query_line, '\0', QUERY_LEN_MAX); if (log_type == 0) sprintf(query_line, "drop table %s_%s", req->name, req->buddy_name); else if (log_type == 1) sprintf(query_line, "drop table %s_%s", req->buddy_name, req->name); else DD(log_type); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } cs_free(&query_line); strncpy(wbuf->data, "11", 2); wbuf->len = 2; D(GREEN"%s delete buddy %s success.", req->name, req->buddy_name); return 0; }
int sql_add_buddy(cs_request_t *req, sqlite3 *db, buf_t *wbuf) { if (req == NULL || req->name == NULL || req->buddy_name == NULL || db == NULL || wbuf == NULL || wbuf->data == NULL) { E("parameter error."); return -1; } /* check relationship */ char *query_line = (char *)cs_malloc(sizeof(char) * QUERY_LEN_MAX); if (query_line == NULL) { E("cs_malloc() failed."); DPSTR(wbuf); return -1; } sprintf(query_line, "select * from %s where name='%s'", req->name, req->buddy_name); DS(query_line); int sql_select_num = 0; int ret = sqlite3_exec(db, query_line, sql_check_relationship_cb, &sql_select_num, NULL); if (ret == SQLITE_OK && sql_select_num == 1) { D(GREEN"%s and %s are buddy."NO, req->buddy_name, req->name); cs_free(&query_line); return -1; } /* update mine table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "insert into %s(name, log_type) values('%s', 0)", req->name, req->buddy_name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* update mine table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "insert into %s(name, log_type) values('%s', 1)", req->buddy_name, req->name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } /* create log table */ memset(query_line, '\0', QUERY_LEN_MAX); sprintf(query_line, "create table %s_%s(id integer primary key, name text, content text, datetime text)", req->name, req->buddy_name); DS(query_line); ret = sqlite3_exec(db, query_line, NULL, NULL, NULL); if (ret != SQLITE_OK) { E("sqlite3_exec() failed."); cs_free(&query_line); return -1; } cs_free(&query_line); strncpy(wbuf->data, "11", 2); wbuf->len = 2; D(GREEN"%s add buddy %s success.", req->name, req->buddy_name); return 0; }