Stap 5: Code
## OPERATIE ##
1. Druk op de knop start/stop om aan te geven dat u bent klaar om te beginnen code invoer. Het statuslampje begint te langzaam knipperen.
2. Tik in uw code op de knop code. Het statuslampje zal knipperen op 120 hsm, dus u dit als uw metronoom gebruiken kunt als u wilt. Echter zullen het cryptap-programma meten de lengtes van de puls ten opzichte van elkaar proportioneel, dus u ook uw eigen tempo kunt. Zorg enkel ervoor u die nauwkeurig genoeg!
3. Wanneer de invoer van de code wordt gedaan, druk nogmaals op de knop start/stop. Het programma zal dan beslissen of u om binnen te laten.
Aangezien mensen niet zeer nauwkeurige tijd keepers (jouwe is echt niet), stel ik de verhouding van de tolerantie tot +/-30%. Dat betekent dat de beat lengtes kunnen met dat bedrag onjuist, en nog steeds gaan opbrengen. Dit is goed genoeg om te zeggen het verschil tussen vrij gelijkaardig muziek. Er is een kleine hoeveelheid moeilijk bereikbare overlapping tussen dubbele en drievoudige-lengte beats, maar de code is nog steeds erg moeilijk te breken.
Om te ontgrendelen van de deur, moet de beats in de juiste verhoudingen met elkaar zijn verbonden (+/-de tolerantie-verhouding), en het aantal beats moet goed zijn. Als een ongeldig wachtwoord wordt ingevoerd, wordt het programma wacht op een paar seconden, terwijl het negeren van de tussenkomst van de gebruiker. Het zal ook het statuslampje snel knipperen. Indien de juiste code is ingevoerd, de statuslampje zal oplichten gestaag en de deur zal openen voor 8 seconden.
## GEBRUIKERSCONFIGURATIE ##
De sleutel is opgeslagen in een matrix als volgt:
#define sleutellengte 5
Const int sleutel = {1, 3, 2, 3, 3}; "Happy birthday to you"
De matrix bevat de hoeveelheid tijd dat tussen de beats gebeurt. Dus als uw wachtwoord heeft zes merkt als "Happy birthday to you", moet er vijf elementen in de matrix. Als uw wachtwoord echt lang is en je meer dan 16 beats, (echt hard hebt, dat ik beveel het niet), moet u het getal gedefinieerd in deze lijn verhogen:
#define inputCodeLength 16
## DE REST VAN DE CODE ##
Ik was nieuwsgierig over interrupts, dus ik had mijn knoppen activeren interrupts. Om deze interrupts makkelijk te gebruiken, had ik mijn interrupt handlers controleren voor bepaalde functieverwijzingen. Als de aanwijzer niet op NULL is ingesteld, wordt de functie naar verwijst opgeroepen. Deze zijn ingesteld met de verschillende functies van de "modus-instelling" binnen cryptap.c.
Ik een inspanning gedaan om buffer overflows te voorkomen door een maximum aantal ingevoerde pulsen. Als het maximum aantal pulsen worden ingevoerd, wordt het programma onmiddellijk begint wachtwoord analyse en besluit of om de deur te openen.
Ik hoop dat mijn commentaar in de code-help.
## BUGS ##
Ik probeerde te verwijderen van de USB debugging code, maar de code werkt niet, als ik dat doe. Dus, ik liet in usb_init() en de verklaringen van de verschillende print(). Ik zou het waarderen als iemand kon weghalen en nog steeds het werk van het programma hebben. Nog beter als zij kunnen uitleggen waarom het niet werkte voor mij.
Onmiddellijk na wordt geprogrammeerd, accepteert de Teensy soms geen invoer van de code. Om dit oplossen, uit-en inschakelen het circuit.