Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
// 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;
}
Exemplo n.º 3
0
// 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;
}
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
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
Exemplo n.º 8
0
/* 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;
}
Exemplo n.º 9
0
/*************************************************************************************
// 		Function: BspPowerHandleOff
// 	     Purpose: Deinit bus which shutdhow when enter sleep   
//       Returns: no Return
//***********************************************************************************/
void 
BspPowerHandleOff(VOID)
{
	DPSTR("BspPowerHandleOff");
    BspNotifyLed(FALSE);
    BatCriticalLowWaitCount=0;	   

}
Exemplo n.º 10
0
/*************************************************************************************
// 		Function: BspPowerHandleON
// 	     Purpose: Init bus which shutdhow when enter sleep   
//       Returns: no Return
//***********************************************************************************/
void 
BspPowerHandleOn(VOID)
{
	DPSTR("BspPowerHandleOn");
	BspBattModuleConfig();
	BspFuelGaugeResetBatStatusInPercent();	

}
Exemplo n.º 11
0
/* 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;
}
Exemplo n.º 12
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;
}
Exemplo n.º 13
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;
}
Exemplo n.º 14
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;
}
Exemplo n.º 15
0
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;
}
Exemplo n.º 16
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;
}
Exemplo n.º 17
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;
}
Exemplo n.º 18
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);
}
Exemplo n.º 19
0
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);
		}
         }
	}
}
Exemplo n.º 20
0
/* 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 */
Exemplo n.º 21
0
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;
}
Exemplo n.º 22
0
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;
}
Exemplo n.º 23
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;
}
Exemplo n.º 24
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;
}
Exemplo n.º 25
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;
}
Exemplo n.º 26
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;
}
Exemplo n.º 27
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;
}