]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
Add forgotten file
[proxmark3-svn] / armsrc / appmain.c
index a3871eb64f7ab73558d62327901dc1cf7641acb8..72d8789e75af6a10637d82bbc2b401bb83a89371 100644 (file)
@@ -236,6 +236,34 @@ void ReadMem(int addr)
                DbpIntegers(0, data[i], data[i+1]);
 }
 
+/* osimage version information is linked in */
+extern struct version_information version_information;
+/* bootrom version information is pointed to from _bootphase1_version_pointer */
+extern char _bootphase1_version_pointer, _flash_start, _flash_end;
+void SendVersion(void)
+{
+       char temp[48]; /* Limited data payload in USB packets */
+       DbpString("Prox/RFID mark3 RFID instrument");
+       
+       /* Try to find the bootrom version information. Expect to find a pointer at 
+        * symbol _bootphase1_version_pointer, perform slight sanity checks on the
+        * pointer, then use it.
+        */
+       void *bootrom_version = *(void**)&_bootphase1_version_pointer;
+       if( bootrom_version < (void*)&_flash_start || bootrom_version >= (void*)&_flash_end ) {
+               DbpString("bootrom version information appears invalid");
+       } else {
+               FormatVersionInformation(temp, sizeof(temp), "bootrom: ", bootrom_version);
+               DbpString(temp);
+       }
+       
+       FormatVersionInformation(temp, sizeof(temp), "os: ", &version_information);
+       DbpString(temp);
+       
+       FpgaGatherVersion(temp, sizeof(temp));
+       DbpString(temp);
+}
+
 // samy's sniff and repeat routine
 void SamyRun()
 {
@@ -616,6 +644,12 @@ void UsbPacketReceived(BYTE *packet, int len)
                case CMD_SET_LF_DIVISOR:
                        FpgaSendCommand(FPGA_CMD_SET_DIVISOR, c->ext1);
                        break;
+               case CMD_VERSION:
+                       SendVersion();
+                       break;
+               case CMD_LF_SIMULATE_BIDIR:
+                       SimulateTagLowFrequencyBidir(c->ext1, c->ext2);
+                       break;
 #ifdef WITH_LCD
                case CMD_LCD_RESET:
                        LCDReset();
Impressum, Datenschutz