Added PN532 I2C Address
[hackover2013-badge-firmware.git] / main.c
diff --git a/main.c b/main.c
index 2011970..8cff6f6 100644 (file)
--- a/main.c
+++ b/main.c
@@ -7,7 +7,7 @@
 
     Software License Agreement (BSD License)
 
-    Copyright (c) 2010, microBuilder SARL
+    Copyright (c) 2011, microBuilder SARL
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 /**************************************************************************/
+#include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
 
 #include "projectconfig.h"
 #include "sysinit.h"
 
-#include "drivers/sensors/pn532/pn532.h"
-#include "drivers/sensors/pn532/pn532_drvr.h"
+#include "core/gpio/gpio.h"
+#include "core/systick/systick.h"
+
+#ifdef CFG_INTERFACE
+  #include "core/cmd/cmd.h"
+#endif
 
 /**************************************************************************/
 /*! 
     Main program entry point.  After reset, normal code execution will
     begin here.
-
-    Note: CFG_INTERFACE is normally enabled by default.  If you wish to
-          enable the blinking LED code in main, you will need to open
-          projectconfig.h, comment out "#define CFG_INTERFACE" and
-          rebuild the project.
 */
 /**************************************************************************/
-int main (void)
+int main(void)
 {
-  #ifdef CFG_INTERFACE
-    //#error "CFG_INTERFACE must be disabled in projectconfig.h for this demo"
-  #endif
-  #if !defined CFG_PRINTF_USBCDC
-    #error "CFG_PRINTF_USBCDC must be enabled in projectconfig.h for this demo"
-  #endif
-
   // Configure cpu and mandatory peripherals
   systemInit();
-  
-  // Wait 5 second for someone to open the USB connection for printf
-  systickDelay(5000);
-
-  // Initialise the PN532
-  pn532Init();
-
-  byte_t response[256];
-  size_t responseLen;
-  pn532_error_t error;
 
-  // Setup command to initialise a single ISO14443A target at 106kbps 
-  byte_t abtCommand[] = { PN532_COMMAND_INLISTPASSIVETARGET, 0x01, PN532_MODULATION_ISO14443A_106KBPS };
+  uint32_t currentSecond, lastSecond;
+  currentSecond = lastSecond = 0;
 
   while (1)
   {
-    printf("%s", CFG_PRINTF_NEWLINE);
-    printf("Wait for an ISO14443A card (Mifare Classic, etc.)%s", CFG_PRINTF_NEWLINE);
-
-    // Send the command
-    error = pn532Write(abtCommand, sizeof(abtCommand));
-
-    // Wait until we get a response or an unexpected error message
-    do
-    {
-      error = pn532Read(response, &responseLen);
-      systickDelay(25);
-    }
-    #ifdef PN532_UART
-    while (error == PN532_ERROR_RESPONSEBUFFEREMPTY);
-    #endif
-    #ifdef PN532_SPI
-    while ((error == PN532_ERROR_RESPONSEBUFFEREMPTY) || (error = PN532_ERROR_SPIREADYSTATUSTIMEOUT));
-    #endif
-
-    // Print the card details if possible
-    if (!error)
+    // Toggle LED once per second
+    currentSecond = systickGetSecondsActive();
+    if (currentSecond != lastSecond)
     {
-      /* Response for ISO14443A 106KBPS (Mifare Classic, etc.)
-         See UM0701-02 section 7.3.5 for more information
-
-         byte            Description
-         -------------   ------------------------------------------
-         b7              Tags Found
-         b8              Tag Number (only one used in this example)
-         b9..10          SENS_RES
-         b11             SEL_RES
-         b12             NFCID Length
-         b13..NFCIDLen   NFCID                                      
-         
-         SENS_RES   SEL_RES     Manufacturer/Card Type    NFCID Len
-         --------   -------     -----------------------   ---------
-         00 04      08          NXP Mifare Classic 1K     4 bytes   */
-
-      printf("%s", CFG_PRINTF_NEWLINE);
-      printf("%-12s: %d %s", "Tags Found", response[7], CFG_PRINTF_NEWLINE);
-      printf("%-12s: %02X %02X %s", "SENS_RES", response[9], response[10], CFG_PRINTF_NEWLINE);
-      printf("%-12s: %02X %s", "SEL_RES", response[11], CFG_PRINTF_NEWLINE);
-      printf("%-12s: ", "NFCID");
-      size_t pos;
-      for (pos=0; pos < response[12]; pos++) 
-      {
-        printf("%02x ", response[13 + pos]);
-      }
-      printf(CFG_PRINTF_NEWLINE);
-    }
-    else
-    {
-      // Oops .... something bad happened.  Check 'error'
-      printf("Ooops! Error %02X %s", error, CFG_PRINTF_NEWLINE);
+      lastSecond = currentSecond;
+      gpioSetValue(CFG_LED_PORT, CFG_LED_PIN, !(gpioGetValue(CFG_LED_PORT, CFG_LED_PIN)));
     }
 
-    // Wait at least one second before trying again
-    systickDelay(1000);
+    // Poll for CLI input if CFG_INTERFACE is enabled in projectconfig.h
+    #ifdef CFG_INTERFACE 
+      cmdPoll(); 
+    #endif
   }
+
+  return 0;
 }
This page took 0.02281 seconds and 4 git commands to generate.