Ejemplo n.º 1
0
void component_key_service()
{
	char szTrace[256];
	
	sprintf(szTrace, "key = service");
	post_trace(szTrace);	
	
	mobile_state();
	if(!prepare_gsm()) {
		post_trace("gsm power on error");
		
		return;
	}
	if(!phone_dial(TEST_PHONE)) {
		post_trace("dial error");
		power_device(ED_GSM, EP_OFF);
		
		return;
	}
	post_trace("call established");
	phone_hand_free();
	phone_hangup();
	power_device(ED_GSM, EP_OFF);
	post_trace("service completed");	
	mobile_state();
}
Ejemplo n.º 2
0
int main(int argc, char const *argv[])
{
	double operating_time, operating_current;
	double discharge_time;
	//ask user for battery info
	printf("%s", "Enter battery voltage > ");
	scanf("%lf", &bat.voltage);
	printf("%s", "Enter power rating of the battery (in joules) > ");
	scanf("%lf", &bat.energy_limit);
	printf("%s", "What is battery’s available energy (in joules) > ");
	scanf("%lf", &bat.energy_available);
	printf("%s", "What is operating time (in seconds) > ");
	scanf("%lf", &operating_time);
	printf("%s", "What is operating current (int amps) > ");
	scanf("%lf", &operating_current);

	/****** start calculation *******/
	bat = power_device (bat, operating_time, operating_current);
	printf("\n\nthe outcome is %d\n",bat.dec);
	printf("the updated energy is %f\n\n\n",bat.energy_available);
	
	discharge_time = max_time(bat, operating_time, operating_current);
	printf("%s%f\n", "Discharge time with current load:\n", discharge_time);
	bat = recharge (bat);
	discharge_time = max_time(bat, operating_time, operating_current);
	printf("%s%f\n", "Discharge time after the battery is fully recharged:\n", 
		discharge_time);
	//debug
	//printf("%f %f %f\n", bat.voltage, bat.energy_limit, bat.energy_available);
	return 0;
}	
Ejemplo n.º 3
0
void component_key_boardcast()
{
	const uint8 DATA_SIZE = sizeof(HMC5883L_data) + sizeof(RTC_Clock) + sizeof(MMA8451_data);
	char szTrace[piece_size], szData[piece_size];
	
	sprintf(szTrace, "key = broadcast");
	post_trace(szTrace);
	
	mobile_state();
	if(!prepare_transport()) {
		post_trace("gprs power on error");
		
		return;
	}
	read_file("temp", szData, DATA_SIZE);
	post_trace("read sensor data in file named \"temp\" in tf card");
	communication_test((uchar*)szData, DATA_SIZE, (uchar*)szTrace);
	gprs_disconnect();
	power_device(ED_GPRS, EP_OFF);
	if(memcmp(szData, szTrace, DATA_SIZE) == 0) {
		HMC5883L_data *data_5883 = (HMC5883L_data*)szTrace;
		RTC_Clock *clock = (RTC_Clock*)(szTrace + sizeof(HMC5883L_data));
		Sensor *data_8451 = (Sensor*)(szTrace + sizeof(HMC5883L_data) + sizeof(RTC_Clock));
		
		sprintf(szTrace, "传输成功, 5883, x %d, y %d, z %d, 时间, 20%02d年%02d月%02d日%02d时%02d分%02d秒, 8451, x %d, y %d, z %d",
			data_5883->x, data_5883->y, data_5883->z, clock->year, clock->month, clock->day, clock->hour, clock->minute, clock->second, data_8451->x, data_8451->y, data_8451->z);
	} else {
		strcpy(szTrace, "传输失败");
	}
	report_content(szTrace);
	post_trace("broadcast completed");	
	mobile_state();
}
Ejemplo n.º 4
0
void idle_task(void *pvParam)
{	
	while(1) {
		if(KEY_Pressed(KEY_State(), key_right)) {		 			// 如果是KEY1被按下
			while(KEY_Pressed(KEY_State(), key_right));	 		// 等待按键释放
			power_device(ED_SWITCH, EP_OFF);
		}	else if(KEY_Pressed(KEY_State(), key_left)) {	 // 如果是KEY2被按下
			while(KEY_Pressed(KEY_State(), key_left));	 	 // 等待按键释放
			POWER_Control(dev_mobile, pt_on);		
		} else if(KEY_Pressed(KEY_State(), key_alarm)) {				
			while(KEY_Pressed(KEY_State(), key_alarm));	 	// 等待按键释放
		} else if(KEY_Pressed(KEY_State(), key_service)) {
 			while(KEY_Pressed(KEY_State(), key_service));	 // 等待按键释放
		} else if(KEY_Pressed(KEY_State(), key_broadcast)) {
			while(KEY_Pressed(KEY_State(), key_broadcast));	// 等待按键释放
		} else if(KEY_PowerOff()) {			
			POWER_Off();			
		}	
	}
}
Ejemplo n.º 5
0
void mobile_off_time()
{
	int nCount=0;
	char s[10] = {0};
	uint8 nPowerState = POWER_State(dev_mobile);
	if(nPowerState == pt_off){
		post_trace("mobile state is off");
		return;
	}
	post_trace("mobile power off start");
	power_device(ED_SWITCH, EP_OFF);
	while(1){
		nPowerState = POWER_State(dev_mobile);
		if(nPowerState == pt_off){	post_trace("end");
			break;
		}
	//	delay_ms(100);
		++nCount;
	}
	sprintf(s,"mobile power off:%d",nCount);
	post_trace(s);	

}
Ejemplo n.º 6
0
void state_task(void *pvParam)
{	
	LED_Light(led_red, false);
	LED_Light(led_green, false);
	LED_Light(led_blue, false);	
	
	power_screen(true);
	while(1) {
		if(KEY_Pressed(KEY_State(), key_right)) {		 			// 如果是KEY1被按下
			while(KEY_Pressed(KEY_State(), key_right));	 		// 等待按键释放
			post_trace("power on");
			POWER_Control(dev_mobile, pt_on);
			display_clear();
			screen_step(0);
		}	else if(KEY_Pressed(KEY_State(), key_left)) {	 // 如果是KEY2被按下
			while(KEY_Pressed(KEY_State(), key_left));	 	 // 等待按键释放
			post_trace("power off");
			//POWER_Control(dev_mobile, pt_off);
			power_device(ED_SWITCH, EP_OFF);
			display_clear();
			screen_step(1);		
		} else if(KEY_Pressed(KEY_State(), key_alarm)) {			
			while(KEY_Pressed(KEY_State(), key_alarm));	 	// 等待按键释放
			mobile_state();
			display_clear();
			screen_step(4);	
		} else if(KEY_Pressed(KEY_State(), key_service)) {
            uint8 nPowerState;
			
			while(KEY_Pressed(KEY_State(), key_service));	// 等待按键释放
			mobile_state();
			nPowerState = POWER_State(dev_mobile);
			if(pt_comm == nPowerState) {
				post_trace("shutdown gsm");
				power_device(ED_GSM, EP_OFF);
			} else {
				post_trace("poweron gsm");
				power_device(ED_GSM, EP_ON);
			}
			display_clear();
			screen_step(2);
		} else if(KEY_Pressed(KEY_State(), key_broadcast)) {			
			uint8 nPowerState;
			
			while(KEY_Pressed(KEY_State(), key_broadcast));	// 等待按键释放
			mobile_state();
			nPowerState = POWER_State(dev_mobile);
			if(pt_hibernation == nPowerState) {
				post_trace("wakup");
				POWER_Control(dev_mobile, pt_wakeup);
			} else {
				post_trace("hibernation");
				POWER_Control(dev_mobile, pt_hibernation);
			}
			display_clear();
			screen_step(3);
		} else if(KEY_PowerOff()) {
			POWER_Off();
			
			return;			
		}	
	}
}
Ejemplo n.º 7
0
void power_task(void *pvParam)
{	
	LED_Light(led_red, true);
	LED_Light(led_green, true);
	LED_Light(led_blue, true);		
	if(KEY_PowerOff()) {
			post_trace("power key is down");
			POWER_Off();
		
			return;
	}	
	{			
		POWER_Control(dev_mobile, pt_off);
		POWER_Control(dev_mobile, pt_on);
		power_device(ED_GPRS, EP_OFF);
		power_device(ED_GSM, EP_OFF);
		power_device(ED_BLUETOOTH, EP_OFF);
		power_device(ED_GPS, EP_OFF);
		post_trace("mobile power on");
	}
	LED_Light(led_red, false);
	LED_Light(led_green, false);
	LED_Light(led_blue, false);	
	
	while(1) {
		if(KEY_Pressed(KEY_State(), key_right)) {		 			// 如果是KEY1被按下
			while(KEY_Pressed(KEY_State(), key_right));	 		// 等待按键释放
			post_trace("mobile hibernation");
			POWER_Control(dev_mobile, pt_hibernation);
		}	else if(KEY_Pressed(KEY_State(), key_left)) {	 // 如果是KEY2被按下
			while(KEY_Pressed(KEY_State(), key_left));	 	 // 等待按键释放
			post_trace("mobile wakeup");
			power_device(ED_GSM, EP_ON);	
		} else if(KEY_Pressed(KEY_State(), key_alarm)) {		
			static bool bOn = false;			
			
			while(KEY_Pressed(KEY_State(), key_alarm));	 	// 等待按键释放
			
			if(!bOn) {
				power_screen(true);
				draw_rectangle(55, 0, 18, 64);
				bOn = true;
			} else {
				power_screen(false);
				bOn = false;
			}
		} else if(KEY_Pressed(KEY_State(), key_service)) {
			static bool bOn = false;
			
			while(KEY_Pressed(KEY_State(), key_service));	 // 等待按键释放
			
			if(!bOn) {
				LED_Light(led_red, true);
				bOn = true;
			} else {
				LED_Light(led_red, false);
				bOn = false;
			}
		} else if(KEY_Pressed(KEY_State(), key_broadcast)) {
			while(KEY_Pressed(KEY_State(), key_broadcast));	// 等待按键释放
			post_trace("arm hibernation");
			POWER_Control(dev_system, pt_hibernation);
		} else if(KEY_PowerOff()) {
			POWER_Off();
			
			return;		
		}	
	}
}
Ejemplo n.º 8
0
void protocol_download()
{
	UpdateResp update = { 0 };
	uint8 nIndex;
	uint16 nOffset;

	power_device(ED_GPRS, EP_ON);
	post_trace("gprs power on");
	if(!gprs_dial(APN_USER, APN_PASS)) {
		post_trace("gprs dial error");
		power_device(ED_GPRS, EP_OFF);
		
		return;
	}
	if(!gprs_connect(SERVER_ADDR, SERVER_PORT)) {
		post_trace("gprs connect error");
		power_device(ED_GPRS, EP_OFF);
		
		return;
	}
	if(!request_update(&update)) {
		gprs_disconnect();
		power_device(ED_GPRS, EP_OFF);
		
		return;
	}
	
	complete_communication();
	
	for(nIndex = 0; nIndex < ECT_COUNT; ++nIndex) {
		if(0 == update.update[nIndex] || EV_REMOVE == update.update[nIndex]) {
			continue;
		}
		if(ECT_HEALTH == nIndex) {
			uchar szBuf[SERVER_DATA_SIZE] = { 0 };
			char szPath[max_path] = { 0 };
			uint8 nLen;
			
			sprintf(szPath, "%s0", HEALTH_PATH);
			for(nOffset = 0; nOffset < update.update[nIndex]; ++nOffset) {
				nLen = SERVER_DATA_SIZE;
				if(!download_health(nOffset, szBuf, &nLen)) {
					break;
				}
				if(!write_file_ex(szPath, szBuf, nLen, nOffset * SERVER_DATA_SIZE)) {
					break;
				}
			}
			complete_communication();
		} else if(ECT_CONFIG == nIndex) {
			Config config = { 0 };
			
			if(!download_config(0, &config)) {
				continue;
			}
		   	save_server_config(&config);
			complete_communication();
		} else if(ECT_RELATION == nIndex) {
			Relation relation = { 0 };
			char szPath[max_path] = { 0 };
			uint8 nFile = 0;
			
			if(EV_REMOVE == update.update[nIndex]) {
				// remove relation
				continue;
			}
			for(nOffset = 0; nOffset < update.update[nIndex]; ++nOffset) {
				if(!download_relation(nOffset, &relation)) {
					continue;
				}
				sprintf(szPath, "%s%d", RELATION_PATH, nFile++);
				if(!write_file(szPath, &relation, sizeof(Relation))) {
					--nFile;
				}
			}
			complete_communication();
		} else if(ECT_REMIND == nIndex) {
			Remind remind = { 0 };
			char szPath[max_path] = { 0 };
			uint8 nFile = 0;
			
			if(EV_REMOVE == update.update[nIndex]) {
				// remove remind
				continue;
			}
			for(nOffset = 0; nOffset < update.update[nIndex]; ++nOffset) {
				if(!download_remind(nOffset, &remind)) {
					continue;
				}
				sprintf(szPath, "%s%d", RELATION_PATH, nFile++);
				if(!write_file(szPath, &remind, sizeof(Remind))) {
					--nFile;
				}
			}
			complete_communication();
		}
	}
	
	gprs_disconnect();
	power_device(ED_GPRS, EP_OFF);
}
Ejemplo n.º 9
0
void protocol_upload()
{
	uint8 nIndex;
	char szPath[max_path] = { 0 };
	uchar szData[BUFFER_SIZE] = { 0 };
	bool bRet = true;
	
	power_device(ED_GPRS, EP_ON);
	post_trace("gprs power on");
	if(!gprs_dial(APN_USER, APN_PASS)) {
		post_trace("gprs dial error");
		power_device(ED_GPRS, EP_OFF);
		
		return;
	}
	if(!gprs_connect(SERVER_ADDR, SERVER_PORT)) {
		post_trace("gprs connect error");
		power_device(ED_GPRS, EP_OFF);
		
		return;
	}
	for(nIndex = 0; nIndex < 3 && bRet; ++nIndex) {
		sprintf(szPath, "%s%d", BASE_PATH, nIndex);
		if(!read_file(szPath, szData, sizeof(Base))) {
			continue;
		}
		bRet = upload_base((BasePtr)szData);
		if(!bRet) {
			break;
		}
	}
	
	for(nIndex = 0; nIndex < 3 && bRet; ++nIndex) {
		sprintf(szPath, "%s%d", ACTIVITY_PATH, nIndex);
		if(!read_file(szPath, szData, sizeof(Activity))) {
			continue;
		}
		bRet = upload_activity((ActivityPtr)szData);
		if(!bRet) {
			break;
		}
	}

	for(nIndex = 0; nIndex < 3 && bRet; ++nIndex) {
		sprintf(szPath, "%s%d", STEP_PATH, nIndex);
		if(!read_file(szPath, szData, sizeof(Step))) {
			continue;
		}
		bRet = upload_step((StepPtr)szData);
		if(!bRet) {
			break;
		}
	}
	
	for(nIndex = 0; nIndex < 3 && bRet; ++nIndex) {
		sprintf(szPath, "%s%d", EVENT_PATH, nIndex);
		if(!read_file(szPath, szData, sizeof(Event))) {
			continue;
		}
		bRet = upload_event((EventPtr)szData);
		if(!bRet) {
			break;
		}
	}
	
	for(nIndex = 0; nIndex < 3 && bRet; ++nIndex) {
		sprintf(szPath, "%s%d", POSITION_PATH, nIndex);
		if(!read_file(szPath, szData, sizeof(Position))) {
			continue;
		}
		bRet = upload_position((PositionPtr)szData);
		if(!bRet) {
			break;
		}
	}	
	
	complete_communication();
	
	gprs_disconnect();
	power_device(ED_GPRS, EP_OFF);
}