//------------------------------------------------------------------------ // Function turns ON a range of lights. // Center Stage : 5 - 10 // Left Stage : 11 - 15 // Right Stage : 0 - 4 // // pre: unsigned short* lights // // post: a given range of lights is turned ON // void turnOnARangeOfLights(unsigned short** lights, int startBit, int numBits) { unsigned short mask; turnOffAllLights(lights); mask = (~((unsigned short) ~0 << numBits) << startBit); *(*lights) |= mask; }
void initializeLights() { uint8_t i; for (i=0; i<_NUM_LIGHT_TYPE; ++i) { _rear_lights[i]._address = _rear_light_address[i]; } for (i=0; i<_NUM_LEDS; ++i) { _led_lights[i]._address = i; } turnOffAllLights(); }
//------------------------------------------------------------------------ // Functions gets prompts the user for their option listed on the menu // from printMenu() printed prior to this function // // pre: stage lights UH // // post: performs a number of operations on the stage lights by calling // the appropriate function while user is willing to do so // //void getUserOption(unsigned short* lights) void getUserOption(unsigned short** lights, unsigned short** overLayPattern, int *startBit, int *numBits) { int userOption, endProgram, emptyReply; char buffer[128], *line, *endPtr, printFlag; printFlag = endProgram = 1; emptyReply = 0; while(gets(buffer), (endProgram)) { if(*buffer == '\0') //if empty response { //re-prompt user while (*buffer == '\0') { printMenu(); gets(buffer); } } strcat(buffer, "\n"); line = strtok(buffer, "\040\t\n"); userOption = (int)strtol(line, &endPtr, 10); switch (userOption) { case 1: turnOnAllLights(lights); break; case 2: turnOnARangeOfLights(lights, 5, 6); break; case 3: turnOnARangeOfLights(lights, 11, 6); break; case 4: turnOnARangeOfLights(lights, 0, 5); break; case 5: turnOffAllLights(lights); break; case 6: turnOffARangeOfLights(lights, 5, 6); break; case 7: turnOffARangeOfLights(lights, 11, 6); break; case 8: turnOffARangeOfLights(lights, 0, 5); break; case 9: getOverlayPatternAndStartBit(overLayPattern, startBit, numBits); overLayOnOffPatternOntoLightConfig(lights, overLayPattern, *startBit, *numBits); break; case 10: printFlag = 0; break; case 11: printMenu(); break; case 12: endProgram = 0; break; default: printf("Please enter a numeric value (1 - 12) from\n" "the menu option\n"); break; } //switch if(endProgram) printBits(**lights); if(printFlag && endProgram && emptyReply) printMenu(); } }