Exemple #1
0
void advancedConfig() {
	
	while(1) {
	
		menuMax = 1;
		selectedMenu = NOT_SELECTED;
		currentMenu = 0;

		while(selectedMenu == NOT_SELECTED) {
			if (currentMenu == 0) { // DWELL
				greenOn();
				delay_ms(50);
				greenOff();
				redOn();
				delay_ms(50);
				redOff();
				
				delay_ms(800);
			} else if (currentMenu == 1) { // DEBOUNCE 2
				for (uint8_t i = 0; i < 2; i++) {
					greenOn();
					delay_ms(50);
					greenOff();
					redOn();
					delay_ms(50);
					redOff();
					delay_ms(100);
				}

				delay_ms(700);
			}
		}
	
		if (selectedMenu == 0) { // DWELL
			// Max is set high to prevent wrapping around to 0 without the user knowing
			getNumberFromUser(USER_DWELL, 255);
	
			// Dwell was entered into selectedMenu.  Verify it and save it.
			if (selectedMenu >= 2 && selectedMenu <= 20) {
				eeprom_write_byte(&EEPROM_USER_DWELL, selectedMenu);
				USER_DWELL = selectedMenu;
				successBlink();
			} else {
				failureBlink();
			}
		} else { // DEBOUNCE
			// Max is set high to prevent wrapping around to 0 without the user knowing
			getNumberFromUser(USER_DEBOUNCE, 255);
		
			// Debounce was entered into selectedMenu.  Verify it and save it.
			if (selectedMenu >= 5 && selectedMenu <= 50) {
				eeprom_write_byte(&EEPROM_USER_DEBOUNCE, selectedMenu);
				USER_DWELL = selectedMenu;
				successBlink();
			} else {
				failureBlink();
			}
		}	
	}			
}
Exemple #2
0
void presetMenu() {

	// SELECTOR
	currentSelector = 0;
	menuMax = 1;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;

	while(selectedMenu == NOT_SELECTED) {
		if (currentMenu == 0) { // Preset 1
			redOn();
			delay_ms(100);
			redOff();
			delay_ms(800);
		} else if (currentMenu == 1) { // Preset 2
			for (uint8_t i = 0; i < 2; i++) {
				redOn();
				delay_ms(100);
				redOff();
				delay_ms(100);
			}

			delay_ms(700);
		}
	}

	currentSelector = selectedMenu;

	////////

	menuMax = 2;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;
	while(selectedMenu == NOT_SELECTED) {
				
		if (currentMenu == 0) { // Preset 1
			orangeLed();
			delay_ms(800);
		} else if (currentMenu == 1) { // Preset 2
			for (uint8_t i = 0; i < 2; i++) {
				orangeLed();
				delay_ms(100);
			}
			
			delay_ms(800);
		} else if (currentMenu == 2) {  // Preset 3
			for (uint8_t i = 0; i < 3; i++) {
				orangeLed();
				delay_ms(100);
			}
			
			delay_ms(800);
		}
	}
	
	CURRENT_PRESET[currentSelector] = selectedMenu;
}
Exemple #3
0
void mainMenu() {
	menuMax = 4;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;
	bool state = false;
	while(selectedMenu == NOT_SELECTED) {
		if (currentMenu == 0) { // Firing Mode (toggle green then red)
			state = !state;
			
			redSet(!state);
			greenSet(state);
						
			delay_ms(100);
		} else if (currentMenu == 1) { // Firing Rate (fast green blink)
			state = !state;
			
			redOff();
			greenSet(state);
			
			delay_ms(50);
		} else if (currentMenu == 2) {  // Burst size (three red blinks)
			lightsOff();
			
			// Display as three blinks of red then pause and repeat
			for (uint8_t i = 0; i < 3; i++) {
				redOn();
				delay_ms(100);
				redOff();
				
				if (i == 2) {
					for (uint8_t i = 0; i < 100; i++) {
						delay_ms(10);
						
						if (selectedMenu != NOT_SELECTED) {
							break;
						}
					}					
				} else {
					delay_ms(100);
				}
			}
		} else if (currentMenu == 3) {  // Ammo Limit (Solid Red)
			redOn();
			greenOff();
		} else if (currentMenu == 4) {  // Safety Shot (Solid Green)
			redOff();
			greenOn();
		}			
	}
}
Exemple #4
0
void redSet(bool state) {
	if (state) {
		redOn();
	} else {
		redOff();
	}
}
Exemple #5
0
void getNumberFromUser(uint8_t currentNumber, uint8_t max) {
	bool state = false;
	menuMax = max;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;
	uint8_t currentRate = currentNumber;
	uint8_t displayRate = 0;
	delay_ms(500);
	while(selectedMenu == NOT_SELECTED) {
		if (currentMenu == 0) {
			if (state) {
				displayRate++;
			}
			
			state = !state;
			
			redOff();
			greenSet(state);
			
			delay_ms(200);
			
			if (displayRate >= currentRate) {
				displayRate = 0;
				delay_ms(1000);
			}
		} else {
			lightsOff();
		}
	}
}
Exemple #6
0
void failureBlink() {
	delay_ms(200);
	for (uint8_t i = 0; i < 10; i++) {
		redOn();
		delay_ms(50);
		redOff();
		delay_ms(50);
	}
}
Exemple #7
0
void orangeLed() {
	for (uint8_t x = 0; x < 33; x++) {
		greenOn();
		delay_ms(2);
		redOn();
		
		greenOff();
		delay_ms(1);
		redOff();
	}	
}
Exemple #8
0
void successBlink() {
	for (uint8_t i = 0; i < 3; i++) {
		for (uint8_t x = 0; x < 200; x++) {
			greenOn();
			delay_ms(2);
			redOn();
			greenOff();
			delay_ms(1);
			redOff();
		}
	}
}
void Traffic_Light::allOff() {
  redOff();
  yellowOff();
  greenOff(); 
}
static void TaskSerialCmdProc(void) {

  uartInit();

  uint16_t uint16;

  while( true ) {

    Sys_WaitSemaphore(hSerial, 153);
    if( SysWaitTimedOut(hTaskSerialCmdProc) == false ) {

      // pkt is ready to parse
      rxPktCnt++;

      switch( buffer[0] ) {
        case SERCMD_LEDON:
          redOn();
          buffer[1] = '0';
          buffer[2] = '\n';
          break;
        case SERCMD_LEDOFF:
          redOff();
          buffer[1] = '0';
          buffer[2] = '\n';
          break;
        case SERCMD_CHKBUSY:
          buffer[1] = '0';
          buffer[2] = '0'+injIsBusy();
          buffer[3] = '\n';
          break;
        case SERCMD_GETCYCLES:
          buffer[1] = '0'+injGetCycles(&uint16);
          uitoa_hex(&buffer[2], uint16, 4);
          buffer[6] = '\n';
          break;
        case SERCMD_SETCYCLES:
          uint16 = atoui_hex(&buffer[1]);
          buffer[1] = '0'+injSetCycles(&uint16);
          buffer[2] = '\n';
          break;
        case SERCMD_GETACCCYCLES:
          buffer[1] = '0'+injGetAccumulatedCycles(&uint16);
          uitoa_hex(&buffer[2], uint16, 4);
          buffer[6] = '\n';
          break;
        case SERCMD_SETACCCYCLES:
          uint16 = atoui_hex(&buffer[1]);
          buffer[1] = '0'+injSetAccumulatedCycles(&uint16);
          buffer[2] = '\n';
          break;
        case SERCMD_START:
          buffer[1] = '0'+injStart();
          buffer[2] = '\n';
          break;
        case SERCMD_SETONWIDTH:
          uint16 = atoui_hex(&buffer[1]);
          buffer[1] = '0'+injSetOnWidth(&uint16);
          buffer[2] = '\n';
          break;
        case SERCMD_GETONWIDTH:
          buffer[1] = '0'+injGetOnWidth(&uint16);
          uitoa_hex(&buffer[2], uint16, 4);
          buffer[6] = '\n';
          break;
        case SERCMD_ABORT:
          buffer[1] = '0'+injAbort();
          buffer[2] = '\n';
          break;
        case SERCMD_GETOFFWIDTH:
          buffer[1] = '0'+injGetOffWidth(&uint16);
          uitoa_hex(&buffer[2], uint16, 4);
          buffer[6] = '\n';
          break;
        case SERCMD_SETFPPWM:
          uint16 = atoui_hex(&buffer[1]);
          buffer[1] = '0'+fpSet(&uint16);
          buffer[2] = '\n';
          break;
        case SERCMD_GETFPPWM:
          buffer[1] = '0'+fpGet(&uint16);
          uitoa_hex(&buffer[2], uint16, 4);
          buffer[6] = '\n';
          break;
        default:
          errors++;
          buffer[1] = 'F';
          buffer[2] = '\n';
          break;
      }

      // buffer already contains response, trigger
      // a send and wait for it to complete
      pie1.TXIE = true;       // goes straight to int and loads the first item
      Sys_WaitSemaphore(hSerial, 153);

      if( SysWaitTimedOut(hTaskSerialCmdProc) == false ) {
        txPktCnt++;
      } else {
        // tx never finished - got a timeout
        errors++;
      }

    }
  }
}
Exemple #11
0
void firingModeMenu() {
	menuMax = 3;
	selectedMenu = NOT_SELECTED;
	currentMenu = FIRING_MODE;
	bool state = LOW;
	while(selectedMenu == NOT_SELECTED) {
		if (currentMenu == 0) {
			state = !state;
			
			redSet(state);
			greenOff();
			
			delay_ms(50);
		} else if (currentMenu == 1) { // Three Round Burst
			lightsOff();
			
			// Display as three blinks of green then pause and repeat
			for (uint8_t i = 0; i < 3; i++) {
				greenOn();
				delay_ms(100);
				greenOff();
				
				if (selectedMenu != NOT_SELECTED) {
					break;
				}
				
				if (i == 2) {
					delay_ms(1000);
				} else {
					delay_ms(100);
				}
			}				
		} else if (currentMenu == 2) { // Auto Response
			lightsOff();
	
			// Display as blink green, blink red, then pause
			greenOn();
			delay_ms(100);
			greenOff();
			delay_ms(100);
			redOn();
			delay_ms(100);
			redOff();

			if (selectedMenu != NOT_SELECTED) {
				break;
			}
		
			delay_ms(1000);
		} else if (currentMenu == 3) { // Auto Response
			redOff();
			greenOn();
		}
	}
	
	if (selectedMenu >= 0 && selectedMenu <= 3) {
		eeprom_write_byte(&EEPROM_FIRING_MODE[currentSelector][CURRENT_PRESET[currentSelector]], selectedMenu);
		successBlink();
	} else {
		failureBlink();
	}
}
Exemple #12
0
void presetMenu() {

#ifdef X7CLASSIC
/************************************************************************/
/* This is used for the X7 classic to distinguish between F and FA      */
/************************************************************************/
	// SELECTOR
	currentSelector = 0;
	menuMax = 1;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;

	while(selectedMenu == NOT_SELECTED) {
		if (currentMenu == 0) { // Preset 1
			redOn();
			delay_ms(100);
			redOff();
			delay_ms(800);
		} else if (currentMenu == 1) { // Preset 2
			for (uint8_t i = 0; i < 2; i++) {
				redOn();
				delay_ms(100);
				redOff();
				delay_ms(100);
			}

			delay_ms(700);
		}
	}

	currentSelector = selectedMenu;

	////////
#endif
	menuMax = 2;
	selectedMenu = NOT_SELECTED;
	currentMenu = 0;
	while(selectedMenu == NOT_SELECTED) {
				
		if (currentMenu == 0) { // Preset 1
			orangeLed();
			delay_ms(800);
		} else if (currentMenu == 1) { // Preset 2
			for (uint8_t i = 0; i < 2; i++) {
				orangeLed();
				delay_ms(100);
			}
			
			delay_ms(800);
		} else if (currentMenu == 2) {  // Preset 3
			for (uint8_t i = 0; i < 3; i++) {
				orangeLed();
				delay_ms(100);
			}
			
			delay_ms(800);
		}
	}

#ifdef X7CLASSIC
	CURRENT_PRESET[currentSelector] = selectedMenu;
#else
	CURRENT_PRESET = selectedMenu;
#endif
}