working version of song control with initialization from sd card
Dependencies: MFRC522 NRF2401P SDFileSystem SPI_TFT_ILI9341 TFT_fonts mbed
Fork of Song_Control by
Diff: hub.cpp
- Revision:
- 7:0aee09577ad3
- Parent:
- 6:00a132a076d5
- Child:
- 8:b40c4553f6d4
--- a/hub.cpp Mon Feb 29 11:04:16 2016 +0000 +++ b/hub.cpp Mon Feb 29 11:39:29 2016 +0000 @@ -437,8 +437,9 @@ * Log an action from a selection of predefined actions done by the current user * Actions used with this method should require a known user to be using system * @param action - enumerated HubActionForLogging that selects from predefined actions + * @param userIndex - int corresponding to the index of the user in the user table */ -void logActionWithUserInfoH(enum HubActionForLoggingH action) +void logActionWithUserInfoH(enum HubActionForLoggingH action, int userIndex) { // Append to a log text file spiSD(); @@ -483,9 +484,9 @@ char rfidBuffer[20]; char uidBuffer[20]; char acctBalanceBuffer[20]; - sprintf(rfidBuffer, "%u ", allUsersH[currentUserH].rfid); - sprintf(uidBuffer, "%u ", allUsersH[currentUserH].uid); - sprintf(acctBalanceBuffer, "%d\n", allUsersH[currentUserH].accountCredit); + sprintf(rfidBuffer, "%u ", allUsersH[userIndex].rfid); + sprintf(uidBuffer, "%u ", allUsersH[userIndex].uid); + sprintf(acctBalanceBuffer, "%d\n", allUsersH[userIndex].accountCredit); strcat(logLine, rfidBuffer); strcat(logLine, uidBuffer); strcat(logLine, acctBalanceBuffer); @@ -556,11 +557,12 @@ /* * User presses the button corresponding to an exit. Returns to home screen * after logging the action. + * @param userIndex - int representing index of user in user table */ -void cancelPressedH() { +void cancelPressedH(int userIndex) { clearAllUserInitiatedFlagsH(); currentScreenH = initialScanRfid; - logActionWithUserInfoH(hubAction_Exit); + logActionWithUserInfoH(hubAction_Exit, userIndex); } /** @@ -679,9 +681,11 @@ // find the user info char foundUserFlag = 0; + int foundUserIndex; for (int i = 0; i < userCountH; i++) { if (allUsersH[i].rfid == actualRfid) { currentUserH = i; + foundUserIndex = i; foundUserFlag = 1; break; } @@ -708,15 +712,15 @@ } // log user scan - logActionWithUserInfoH(hubAction_RfidScanned); + logActionWithUserInfoH(hubAction_RfidScanned, foundUserIndex); // Display info about the user char authorizationFlag = 0; TFT_H.cls(); TFT_H.locate(0,0); TFT_H.printf("UserID: %u\n\r", actualRfid); - TFT_H.printf("Balance:%d\n\r", allUsersH[currentUserH].accountCredit); - if (allUsersH[currentUserH].batterySubscription > 0) { + TFT_H.printf("Balance:%d\n\r", allUsersH[foundUserIndex].accountCredit); + if (allUsersH[foundUserIndex].batterySubscription > 0) { authorizationFlag = 1; } TFT_H.printf("Authorization:%s\n\r", (authorizationFlag)? "YES":"NO"); @@ -743,8 +747,8 @@ TFT_H.printf("Battery Action?\n\r"); TFT_H.locate(0,200); - uint8_t maxBatteries = allUsersH[currentUserH].batterySubscription; - uint8_t outBatteries = allUsersH[currentUserH].batteriesOut; + uint8_t maxBatteries = allUsersH[foundUserIndex].batterySubscription; + uint8_t outBatteries = allUsersH[foundUserIndex].batteriesOut; if ((maxBatteries - outBatteries) == 0) { // can only drop off TFT_H.printf(" drop exit"); @@ -763,17 +767,18 @@ /** * Do if user selects to pickup a battery. Determines how many batteries * a user can pickup based off user info and displays corresponding text + * @param userIndex - int representing index of user in user table */ -void batteryPickUpH() { +void batteryPickUpH(int userIndex) { TFT_H.cls(); TFT_H.locate(0,0); - TFT_H.printf("UserID: %u\n\r\n\r", allUsersH[currentUserH].rfid); + TFT_H.printf("UserID: %u\n\r\n\r", allUsersH[userIndex].rfid); TFT_H.printf("Action: PICK UP\n\r"); TFT_H.locate(0,160); TFT_H.printf("How many batteries?\n\r"); TFT_H.locate(0,200); - switch (allUsersH[currentUserH].batterySubscription - allUsersH[currentUserH].batteriesOut) { + switch (allUsersH[userIndex].batterySubscription - allUsersH[userIndex].batteriesOut) { case 1: { TFT_H.printf(" 1 exit"); break; @@ -797,17 +802,18 @@ /** * Do if user selects to dropoff a battery. Determines how many batteries * a user can pickup based off user info and displays corresponding text + * @param userIndex - int representing index of user in user table */ -void batteryDropOffH() { +void batteryDropOffH(int userIndex) { TFT_H.cls(); TFT_H.locate(0,0); - TFT_H.printf("UserID: %u\n\r\n\r", allUsersH[currentUserH].rfid); + TFT_H.printf("UserID: %u\n\r\n\r", allUsersH[userIndex].rfid); TFT_H.printf("Action: DROP OFF\n\r"); TFT_H.locate(0,160); TFT_H.printf("How many batteries?\n\r"); TFT_H.locate(0,200); - switch (allUsersH[currentUserH].batteriesOut) { + switch (allUsersH[userIndex].batteriesOut) { case 1: { TFT_H.printf(" 1 exit"); break; @@ -832,23 +838,24 @@ * Do after use selects number of batteries to drop off. * Logs the action, changes user info, transmits instructions to other systems * @param numBatteries - int for number of batteries selected to drop off + * @param userIndex - int representing index of user in user table */ -void batteryDropOffH(int numBatteries) { +void batteryDropOffH(int numBatteries, int userIndex) { switch(numBatteries) { case 1: - logActionWithUserInfoH(hubAction_OneBatteryDropped); + logActionWithUserInfoH(hubAction_OneBatteryDropped, userIndex); txBatteryDropOff(1); - allUsersH[currentUserH].batteriesOut--; + allUsersH[userIndex].batteriesOut--; break; case 2: - logActionWithUserInfoH(hubAction_TwoBatteryDropped); + logActionWithUserInfoH(hubAction_TwoBatteryDropped, userIndex); txBatteryDropOff(2); - allUsersH[currentUserH].batteriesOut -= 2; + allUsersH[userIndex].batteriesOut -= 2; break; case 3: - logActionWithUserInfoH(hubAction_ThreeBatteryDropped); + logActionWithUserInfoH(hubAction_ThreeBatteryDropped, userIndex); txBatteryDropOff(3); - allUsersH[currentUserH].batteriesOut -= 3; + allUsersH[userIndex].batteriesOut -= 3; break; } @@ -860,23 +867,24 @@ * Do after use selects number of batteries to pick up. * Logs the action, changes user info, transmits instructions to other systems * @param numBatteries - int for number of batteries selected to pick up + * @param userIndex - int representing index of user in user table */ -void batteryPickUpH(int numBatteries) { +void batteryPickUpH(int numBatteries, int userIndex) { switch(numBatteries) { case 1: - logActionWithUserInfoH(hubAction_OneBatteryPicked); + logActionWithUserInfoH(hubAction_OneBatteryPicked, userIndex); txBatteryPickUp(1); - allUsersH[currentUserH].batteriesOut++; + allUsersH[userIndex].batteriesOut++; break; case 2: - logActionWithUserInfoH(hubAction_TwoBatteryPicked); + logActionWithUserInfoH(hubAction_TwoBatteryPicked, userIndex); txBatteryPickUp(2); - allUsersH[currentUserH].batteriesOut += 2; + allUsersH[userIndex].batteriesOut += 2; break; case 3: - logActionWithUserInfoH(hubAction_ThreeBatteryPicked); + logActionWithUserInfoH(hubAction_ThreeBatteryPicked, userIndex); txBatteryPickUp(3); - allUsersH[currentUserH].batteriesOut += 3; + allUsersH[userIndex].batteriesOut += 3; break; } @@ -970,15 +978,15 @@ uint8_t outBatteries = allUsersH[currentUserH].batteriesOut; if ((maxBatteries - outBatteries) == 0) { - if (flagButtonOneH) batteryDropOffH(); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryDropOffH(currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); } else if (outBatteries == 0) { - if (flagButtonOneH) batteryPickUpH(); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryPickUpH(currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); } else { - if (flagButtonOneH) batteryPickUpH(); - if (flagButtonThreeH) batteryDropOffH(); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryPickUpH(currentUserH); + if (flagButtonThreeH) batteryDropOffH(currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); } break; @@ -986,21 +994,21 @@ case batterySelectNumberForDropoff: { switch (allUsersH[currentUserH].batteriesOut) { case 1: { - if (flagButtonOneH) batteryDropOffH(1); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryDropOffH(1, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } case 2: { - if (flagButtonOneH) batteryDropOffH(1); - if (flagButtonTwoH) batteryDropOffH(2); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryDropOffH(1, currentUserH); + if (flagButtonTwoH) batteryDropOffH(2, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } case 3: { - if (flagButtonOneH) batteryDropOffH(1); - if (flagButtonTwoH) batteryDropOffH(2); - if (flagButtonThreeH) batteryDropOffH(3); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryDropOffH(1, currentUserH); + if (flagButtonTwoH) batteryDropOffH(2, currentUserH); + if (flagButtonThreeH) batteryDropOffH(3, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } } @@ -1009,21 +1017,21 @@ case batterySelectNumberForPickup: { switch (allUsersH[currentUserH].batterySubscription - allUsersH[currentUserH].batteriesOut) { case 1: { - if (flagButtonOneH) batteryPickUpH(1); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryPickUpH(1, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } case 2: { - if (flagButtonOneH) batteryPickUpH(1); - if (flagButtonTwoH) batteryPickUpH(2); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryPickUpH(1, currentUserH); + if (flagButtonTwoH) batteryPickUpH(2, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } case 3: { - if (flagButtonOneH) batteryPickUpH(1); - if (flagButtonTwoH) batteryPickUpH(2); - if (flagButtonThreeH) batteryPickUpH(3); - if (flagButtonFourH) cancelPressedH(); + if (flagButtonOneH) batteryPickUpH(1, currentUserH); + if (flagButtonTwoH) batteryPickUpH(2, currentUserH); + if (flagButtonThreeH) batteryPickUpH(3, currentUserH); + if (flagButtonFourH) cancelPressedH(currentUserH); break; } }