Ejemplo n.º 1
0
int main(void)
{
	int8_t encCnt = 0;
	uint8_t action = ACTION_NOACTION;

	/* Init hardware */
	hwInit();
	#if 0
	if (extFunc == USE_DS18B20) {
		ds18x20ConvertTemp();
		setSensTimer(TEMP_MEASURE_TIME);
	}
	#endif
	while (1) {
		#if 0
		/* Control temperature */
		if (extFunc == USE_DS18B20) {
			if (getSensTimer() == 0) {
				ds18x20GetAllTemps();
				ds18x20ConvertTemp();
				setSensTimer(SENSOR_POLL_INTERVAL);
			}
			tempControlProcess();
		}
		#endif
		/* Emulate poweroff if any of timers expired */
		if (getStbyTimer() == 0 || getSilenceTimer() == 0)
			action = CMD_RC_STBY;

		/* Check alarm and update time */
		if (action == ACTION_NOACTION)
			action = checkAlarmAndTime();

		/* Convert input command to action */
		if (action == ACTION_NOACTION)
			action = getAction();

		/* Handle action */
		handleAction(action);

		/* Handle encoder */
		encCnt = getEncoder();				/* Get value from encoder */
		if (action == CMD_RC_VOL_UP)		/* Emulate VOLUME_UP action as encoder action */
			encCnt++;
		if (action == CMD_RC_VOL_DOWN)	/* Emulate VOLUME_DOWN action as encoder action */
			encCnt--;
		handleEncoder(encCnt);

		/* Reset silence timer on any action */
		if (encCnt || (action != ACTION_NOACTION && action != ACTION_EXIT_STANDBY))
			enableSilenceTimer();

		/* Reset handled action */
		action = ACTION_NOACTION;

		/* Check if we need exit to default mode*/
		handleExitDefaultMode();

		/* Switch to timer mode if it expires */
		handleTimers();

		/* Clear screen if mode has changed */
		handleModeChange();

		/* Show things */
		showScreen();
	}

	return 0;
}
Ejemplo n.º 2
0
int main(void)
{
	uint8_t cmd;
	uint8_t dispMode = MODE_MAIN;

	static int8_t direction = PARAM_UP;

	hwInit();

	showTimeMasked();

	ds18x20Process();
	setSensTimer(TEMP_MEASURE_TIME);

	while(1) {
		// Update sensors with SENSOR_POLL_INTERVAL period
		if (getSensTimer() == 0) {
			setSensTimer(SENSOR_POLL_INTERVAL);
			ds18x20Process();
			if (bmp180HaveSensor())
				bmp180Convert();
			dht22Read();
		}

		// Check alarm
		checkAlarm();

		// Update brightness only when not in brightness setup
		if (dispMode != MODE_BRIGHTNESS)
			calcBrightness();

		// Get command from buttons
		cmd = getBtnCmd();

		// Beep on button pressed
		if (cmd != CMD_EMPTY) {
			if (cmd < CMD_BTN_1_LONG)
				startBeeper(BEEP_SHORT);
			else
				startBeeper(BEEP_LONG);
		}

		// Stop scrolling on any button pressed
		if (cmd != CMD_EMPTY)
			matrixHwScroll(MATRIX_SCROLL_STOP);

		// Handle command
		switch (cmd) {
		case CMD_BTN_1:
			direction = PARAM_UP;
			switch (dispMode) {
			case MODE_EDIT_TIME:
				rtcNextEditParam();
				break;
			case MODE_EDIT_ALARM:
				alarmNextEditParam();
				break;
			}
			break;
		case CMD_BTN_2:
			direction = PARAM_UP;
		case CMD_BTN_3:
			if (cmd == CMD_BTN_3)
				direction = PARAM_DOWN;
			switch (dispMode) {
			case MODE_MAIN:
				startScroll(cmd - CMD_BTN_2);
				break;
			case MODE_EDIT_TIME:
				rtcChangeTime(direction);
				break;
			case MODE_EDIT_ALARM:
				alarmChange(direction);
				break;
			case MODE_BRIGHTNESS:
				changeBrightness(direction);
				break;
			}
			break;
		case CMD_BTN_1_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_EDIT_TIME;
				rtcNextEditParam();
			} else {
				rtc.etm = RTC_NOEDIT;
				alarmSave();
				alarm.eam = ALARM_NOEDIT;
				saveMaxBrightness();
				dispMode = MODE_MAIN;
				showTimeMasked();
			}
			break;
		case CMD_BTN_2_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_EDIT_ALARM;
				alarmNextEditParam();
			}
			break;
		case CMD_BTN_3_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_BRIGHTNESS;
				showBrightness(direction, MASK_ALL);
			}
			break;
		case CMD_BTN_1_2_LONG:
			displaySwitchHourZero();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		case CMD_BTN_2_3_LONG:
			displaySwitchBigNum();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		case CMD_BTN_1_3_LONG:
			displaySwitchHourSignal();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		}

		// Show things
		switch (dispMode) {
		case MODE_MAIN:
			showMainScreen();
			break;
		case MODE_EDIT_TIME:
			showTimeEdit(direction);
			break;
		case MODE_EDIT_ALARM:
			showAlarmEdit(direction);
			break;
		case MODE_BRIGHTNESS:
			showBrightness(direction, MASK_NONE);
			break;
		}
	}

	return 0;
}