]> git.pld-linux.org Git - packages/chronojump.git/commitdiff
- updated to 1.7.1 auto/th/chronojump-1.7.1-1
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 29 Jul 2017 16:13:42 +0000 (18:13 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Sat, 29 Jul 2017 16:13:42 +0000 (18:13 +0200)
- more files added to missing patch

chronojump-missing.patch
chronojump.spec

index 78fae181509ee397551b1689ee052461b28e1831..a8ccc5d6dc48e57812466897f66bbed0955e505f 100644 (file)
  if OSTYPE_WINDOWS
  win32-installer: all install
        make -C win32 installer
+--- chronojump-1.7.1/rfid.orig/chronojump_rfid_capture.py      1970-01-01 01:00:00.000000000 +0100
++++ chronojump-1.7.1/rfid/chronojump_rfid_capture.py   2017-07-29 17:56:43.304012163 +0200
+@@ -0,0 +1,65 @@
++#!/usr/bin/env python
++# -*- coding: utf8 -*-
++
++import RPi.GPIO as GPIO
++import MFRC522
++import signal
++
++continue_reading = True
++
++# Capture SIGINT for cleanup when the script is aborted
++def end_read(signal,frame):
++    global continue_reading
++    print "Ctrl+C captured, ending read."
++    continue_reading = False
++    GPIO.cleanup()
++
++# Hook the SIGINT
++signal.signal(signal.SIGINT, end_read)
++
++# Create an object of the class MFRC522
++MIFAREReader = MFRC522.MFRC522()
++
++# Welcome message
++print "Welcome to the MFRC522 data read example"
++print "Press Ctrl-C to stop."
++
++# This loop keeps checking for chips. If one is near it will get the UID and authenticate
++while continue_reading:
++    
++    # Scan for cards    
++    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
++
++    # If a card is found
++    if status == MIFAREReader.MI_OK:
++        print "Card detected"
++    
++    # Get the UID of the card
++    (status,uid) = MIFAREReader.MFRC522_Anticoll()
++
++    # If we have the UID, continue
++    if status == MIFAREReader.MI_OK:
++
++        # Print UID
++        print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])
++
++      file = open("/tmp/chronojump_rfid.txt", "w")
++      file.write(str(uid[0]) + "," + str(uid[1]) + "," + str(uid[2]) + "," + str(uid[3]))
++      file.close()
++    
++        # This is the default key for authentication
++        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
++        
++        # Select the scanned tag
++        MIFAREReader.MFRC522_SelectTag(uid)
++
++        # Authenticate
++        status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)
++
++        # Check if authenticated
++        if status == MIFAREReader.MI_OK:
++            MIFAREReader.MFRC522_Read(8)
++            MIFAREReader.MFRC522_StopCrypto1()
++        else:
++            print "Authentication error"
++
+--- chronojump-1.7.1/rfid.orig/MFRC522.py      1970-01-01 01:00:00.000000000 +0100
++++ chronojump-1.7.1/rfid/MFRC522.py   2017-07-29 17:56:35.870678915 +0200
+@@ -0,0 +1,397 @@
++#!/usr/bin/env python\r
++# -*- coding: utf8 -*-\r
++\r
++import RPi.GPIO as GPIO\r
++import spi\r
++import signal\r
++import time\r
++  \r
++class MFRC522:\r
++  NRSTPD = 22\r
++  \r
++  MAX_LEN = 16\r
++  \r
++  PCD_IDLE       = 0x00\r
++  PCD_AUTHENT    = 0x0E\r
++  PCD_RECEIVE    = 0x08\r
++  PCD_TRANSMIT   = 0x04\r
++  PCD_TRANSCEIVE = 0x0C\r
++  PCD_RESETPHASE = 0x0F\r
++  PCD_CALCCRC    = 0x03\r
++  \r
++  PICC_REQIDL    = 0x26\r
++  PICC_REQALL    = 0x52\r
++  PICC_ANTICOLL  = 0x93\r
++  PICC_SElECTTAG = 0x93\r
++  PICC_AUTHENT1A = 0x60\r
++  PICC_AUTHENT1B = 0x61\r
++  PICC_READ      = 0x30\r
++  PICC_WRITE     = 0xA0\r
++  PICC_DECREMENT = 0xC0\r
++  PICC_INCREMENT = 0xC1\r
++  PICC_RESTORE   = 0xC2\r
++  PICC_TRANSFER  = 0xB0\r
++  PICC_HALT      = 0x50\r
++  \r
++  MI_OK       = 0\r
++  MI_NOTAGERR = 1\r
++  MI_ERR      = 2\r
++  \r
++  Reserved00     = 0x00\r
++  CommandReg     = 0x01\r
++  CommIEnReg     = 0x02\r
++  DivlEnReg      = 0x03\r
++  CommIrqReg     = 0x04\r
++  DivIrqReg      = 0x05\r
++  ErrorReg       = 0x06\r
++  Status1Reg     = 0x07\r
++  Status2Reg     = 0x08\r
++  FIFODataReg    = 0x09\r
++  FIFOLevelReg   = 0x0A\r
++  WaterLevelReg  = 0x0B\r
++  ControlReg     = 0x0C\r
++  BitFramingReg  = 0x0D\r
++  CollReg        = 0x0E\r
++  Reserved01     = 0x0F\r
++  \r
++  Reserved10     = 0x10\r
++  ModeReg        = 0x11\r
++  TxModeReg      = 0x12\r
++  RxModeReg      = 0x13\r
++  TxControlReg   = 0x14\r
++  TxAutoReg      = 0x15\r
++  TxSelReg       = 0x16\r
++  RxSelReg       = 0x17\r
++  RxThresholdReg = 0x18\r
++  DemodReg       = 0x19\r
++  Reserved11     = 0x1A\r
++  Reserved12     = 0x1B\r
++  MifareReg      = 0x1C\r
++  Reserved13     = 0x1D\r
++  Reserved14     = 0x1E\r
++  SerialSpeedReg = 0x1F\r
++  \r
++  Reserved20        = 0x20  \r
++  CRCResultRegM     = 0x21\r
++  CRCResultRegL     = 0x22\r
++  Reserved21        = 0x23\r
++  ModWidthReg       = 0x24\r
++  Reserved22        = 0x25\r
++  RFCfgReg          = 0x26\r
++  GsNReg            = 0x27\r
++  CWGsPReg          = 0x28\r
++  ModGsPReg         = 0x29\r
++  TModeReg          = 0x2A\r
++  TPrescalerReg     = 0x2B\r
++  TReloadRegH       = 0x2C\r
++  TReloadRegL       = 0x2D\r
++  TCounterValueRegH = 0x2E\r
++  TCounterValueRegL = 0x2F\r
++  \r
++  Reserved30      = 0x30\r
++  TestSel1Reg     = 0x31\r
++  TestSel2Reg     = 0x32\r
++  TestPinEnReg    = 0x33\r
++  TestPinValueReg = 0x34\r
++  TestBusReg      = 0x35\r
++  AutoTestReg     = 0x36\r
++  VersionReg      = 0x37\r
++  AnalogTestReg   = 0x38\r
++  TestDAC1Reg     = 0x39\r
++  TestDAC2Reg     = 0x3A\r
++  TestADCReg      = 0x3B\r
++  Reserved31      = 0x3C\r
++  Reserved32      = 0x3D\r
++  Reserved33      = 0x3E\r
++  Reserved34      = 0x3F\r
++    \r
++  serNum = []\r
++  \r
++  def __init__(self, dev='/dev/spidev0.0', spd=1000000):\r
++    spi.openSPI(device=dev,speed=spd)\r
++    GPIO.setmode(GPIO.BOARD)\r
++    GPIO.setup(22, GPIO.OUT)\r
++    GPIO.output(self.NRSTPD, 1)\r
++    self.MFRC522_Init()\r
++  \r
++  def MFRC522_Reset(self):\r
++    self.Write_MFRC522(self.CommandReg, self.PCD_RESETPHASE)\r
++  \r
++  def Write_MFRC522(self, addr, val):\r
++    spi.transfer(((addr<<1)&0x7E,val))\r
++  \r
++  def Read_MFRC522(self, addr):\r
++    val = spi.transfer((((addr<<1)&0x7E) | 0x80,0))\r
++    return val[1]\r
++  \r
++  def SetBitMask(self, reg, mask):\r
++    tmp = self.Read_MFRC522(reg)\r
++    self.Write_MFRC522(reg, tmp | mask)\r
++    \r
++  def ClearBitMask(self, reg, mask):\r
++    tmp = self.Read_MFRC522(reg);\r
++    self.Write_MFRC522(reg, tmp & (~mask))\r
++  \r
++  def AntennaOn(self):\r
++    temp = self.Read_MFRC522(self.TxControlReg)\r
++    if(~(temp & 0x03)):\r
++      self.SetBitMask(self.TxControlReg, 0x03)\r
++  \r
++  def AntennaOff(self):\r
++    self.ClearBitMask(self.TxControlReg, 0x03)\r
++  \r
++  def MFRC522_ToCard(self,command,sendData):\r
++    backData = []\r
++    backLen = 0\r
++    status = self.MI_ERR\r
++    irqEn = 0x00\r
++    waitIRq = 0x00\r
++    lastBits = None\r
++    n = 0\r
++    i = 0\r
++    \r
++    if command == self.PCD_AUTHENT:\r
++      irqEn = 0x12\r
++      waitIRq = 0x10\r
++    if command == self.PCD_TRANSCEIVE:\r
++      irqEn = 0x77\r
++      waitIRq = 0x30\r
++    \r
++    self.Write_MFRC522(self.CommIEnReg, irqEn|0x80)\r
++    self.ClearBitMask(self.CommIrqReg, 0x80)\r
++    self.SetBitMask(self.FIFOLevelReg, 0x80)\r
++    \r
++    self.Write_MFRC522(self.CommandReg, self.PCD_IDLE);  \r
++    \r
++    while(i<len(sendData)):\r
++      self.Write_MFRC522(self.FIFODataReg, sendData[i])\r
++      i = i+1\r
++    \r
++    self.Write_MFRC522(self.CommandReg, command)\r
++      \r
++    if command == self.PCD_TRANSCEIVE:\r
++      self.SetBitMask(self.BitFramingReg, 0x80)\r
++    \r
++    i = 2000\r
++    while True:\r
++      n = self.Read_MFRC522(self.CommIrqReg)\r
++      i = i - 1\r
++      if ~((i!=0) and ~(n&0x01) and ~(n&waitIRq)):\r
++        break\r
++    \r
++    self.ClearBitMask(self.BitFramingReg, 0x80)\r
++  \r
++    if i != 0:\r
++      if (self.Read_MFRC522(self.ErrorReg) & 0x1B)==0x00:\r
++        status = self.MI_OK\r
++\r
++        if n & irqEn & 0x01:\r
++          status = self.MI_NOTAGERR\r
++      \r
++        if command == self.PCD_TRANSCEIVE:\r
++          n = self.Read_MFRC522(self.FIFOLevelReg)\r
++          lastBits = self.Read_MFRC522(self.ControlReg) & 0x07\r
++          if lastBits != 0:\r
++            backLen = (n-1)*8 + lastBits\r
++          else:\r
++            backLen = n*8\r
++          \r
++          if n == 0:\r
++            n = 1\r
++          if n > self.MAX_LEN:\r
++            n = self.MAX_LEN\r
++    \r
++          i = 0\r
++          while i<n:\r
++            backData.append(self.Read_MFRC522(self.FIFODataReg))\r
++            i = i + 1;\r
++      else:\r
++        status = self.MI_ERR\r
++\r
++    return (status,backData,backLen)\r
++  \r
++  \r
++  def MFRC522_Request(self, reqMode):\r
++    status = None\r
++    backBits = None\r
++    TagType = []\r
++    \r
++    self.Write_MFRC522(self.BitFramingReg, 0x07)\r
++    \r
++    TagType.append(reqMode);\r
++    (status,backData,backBits) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, TagType)\r
++  \r
++    if ((status != self.MI_OK) | (backBits != 0x10)):\r
++      status = self.MI_ERR\r
++      \r
++    return (status,backBits)\r
++  \r
++  \r
++  def MFRC522_Anticoll(self):\r
++    backData = []\r
++    serNumCheck = 0\r
++    \r
++    serNum = []\r
++  \r
++    self.Write_MFRC522(self.BitFramingReg, 0x00)\r
++    \r
++    serNum.append(self.PICC_ANTICOLL)\r
++    serNum.append(0x20)\r
++    \r
++    (status,backData,backBits) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE,serNum)\r
++    \r
++    if(status == self.MI_OK):\r
++      i = 0\r
++      if len(backData)==5:\r
++        while i<4:\r
++          serNumCheck = serNumCheck ^ backData[i]\r
++          i = i + 1\r
++        if serNumCheck != backData[i]:\r
++          status = self.MI_ERR\r
++      else:\r
++        status = self.MI_ERR\r
++  \r
++    return (status,backData)\r
++  \r
++  def CalulateCRC(self, pIndata):\r
++    self.ClearBitMask(self.DivIrqReg, 0x04)\r
++    self.SetBitMask(self.FIFOLevelReg, 0x80);\r
++    i = 0\r
++    while i<len(pIndata):\r
++      self.Write_MFRC522(self.FIFODataReg, pIndata[i])\r
++      i = i + 1\r
++    self.Write_MFRC522(self.CommandReg, self.PCD_CALCCRC)\r
++    i = 0xFF\r
++    while True:\r
++      n = self.Read_MFRC522(self.DivIrqReg)\r
++      i = i - 1\r
++      if not ((i != 0) and not (n&0x04)):\r
++        break\r
++    pOutData = []\r
++    pOutData.append(self.Read_MFRC522(self.CRCResultRegL))\r
++    pOutData.append(self.Read_MFRC522(self.CRCResultRegM))\r
++    return pOutData\r
++  \r
++  def MFRC522_SelectTag(self, serNum):\r
++    backData = []\r
++    buf = []\r
++    buf.append(self.PICC_SElECTTAG)\r
++    buf.append(0x70)\r
++    i = 0\r
++    while i<5:\r
++      buf.append(serNum[i])\r
++      i = i + 1\r
++    pOut = self.CalulateCRC(buf)\r
++    buf.append(pOut[0])\r
++    buf.append(pOut[1])\r
++    (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, buf)\r
++    \r
++    if (status == self.MI_OK) and (backLen == 0x18):\r
++      print "Size: " + str(backData[0])\r
++      return    backData[0]\r
++    else:\r
++      return 0\r
++  \r
++  def MFRC522_Auth(self, authMode, BlockAddr, Sectorkey, serNum):\r
++    buff = []\r
++\r
++    # First byte should be the authMode (A or B)\r
++    buff.append(authMode)\r
++\r
++    # Second byte is the trailerBlock (usually 7)\r
++    buff.append(BlockAddr)\r
++\r
++    # Now we need to append the authKey which usually is 6 bytes of 0xFF\r
++    i = 0\r
++    while(i < len(Sectorkey)):\r
++      buff.append(Sectorkey[i])\r
++      i = i + 1\r
++    i = 0\r
++\r
++    # Next we append the first 4 bytes of the UID\r
++    while(i < 4):\r
++      buff.append(serNum[i])\r
++      i = i +1\r
++\r
++    # Now we start the authentication itself\r
++    (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_AUTHENT,buff)\r
++\r
++    # Check if an error occurred\r
++    if not(status == self.MI_OK):\r
++      print "AUTH ERROR!!"\r
++    if not (self.Read_MFRC522(self.Status2Reg) & 0x08) != 0:\r
++      print "AUTH ERROR(status2reg & 0x08) != 0"\r
++\r
++    # Return the status\r
++    return status\r
++  \r
++  def MFRC522_StopCrypto1(self):\r
++    self.ClearBitMask(self.Status2Reg, 0x08)\r
++\r
++  def MFRC522_Read(self, blockAddr):\r
++    recvData = []\r
++    recvData.append(self.PICC_READ)\r
++    recvData.append(blockAddr)\r
++    pOut = self.CalulateCRC(recvData)\r
++    recvData.append(pOut[0])\r
++    recvData.append(pOut[1])\r
++    (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, recvData)\r
++    if not(status == self.MI_OK):\r
++      print "Error while reading!"\r
++    i = 0\r
++    #xavi: not needed\r
++    #if len(backData) == 16:\r
++    #  print "Sector "+str(blockAddr)+" "+str(backData)\r
++  \r
++  def MFRC522_Write(self, blockAddr, writeData):\r
++    buff = []\r
++    buff.append(self.PICC_WRITE)\r
++    buff.append(blockAddr)\r
++    crc = self.CalulateCRC(buff)\r
++    buff.append(crc[0])\r
++    buff.append(crc[1])\r
++    (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, buff)\r
++    if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):\r
++        status = self.MI_ERR\r
++    \r
++    print str(backLen)+" backdata &0x0F == 0x0A "+str(backData[0]&0x0F)\r
++    if status == self.MI_OK:\r
++        i = 0\r
++        buf = []\r
++        while i < 16:\r
++            buf.append(writeData[i])\r
++            i = i + 1\r
++        crc = self.CalulateCRC(buf)\r
++        buf.append(crc[0])\r
++        buf.append(crc[1])\r
++        (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE,buf)\r
++        if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):\r
++            print "Error while writing"\r
++        if status == self.MI_OK:\r
++            print "Data written"\r
++\r
++  def MFRC522_DumpClassic1K(self, key, uid):\r
++    i = 0\r
++    while i < 64:\r
++        status = self.MFRC522_Auth(self.PICC_AUTHENT1A, i, key, uid)\r
++        # Check if authenticated\r
++        if status == self.MI_OK:\r
++            self.MFRC522_Read(i)\r
++        else:\r
++            print "Authentication error"\r
++        i = i+1\r
++\r
++  def MFRC522_Init(self):\r
++    GPIO.output(self.NRSTPD, 1)\r
++  \r
++    self.MFRC522_Reset();\r
++    \r
++    \r
++    self.Write_MFRC522(self.TModeReg, 0x8D)\r
++    self.Write_MFRC522(self.TPrescalerReg, 0x3E)\r
++    self.Write_MFRC522(self.TReloadRegL, 30)\r
++    self.Write_MFRC522(self.TReloadRegH, 0)\r
++    \r
++    self.Write_MFRC522(self.TxAutoReg, 0x40)\r
++    self.Write_MFRC522(self.ModeReg, 0x3D)\r
++    self.AntennaOn()\r
index ffd6c940bbe415e2fb974b51fbd68904072fe32b..097ba97cc8882e10360f53d866a2ad58ef5bee66 100644 (file)
@@ -1,12 +1,12 @@
 Summary:       ChronoJump - system for measurement, management and statistics of the jump events
 Summary(pl.UTF-8):     ChronoJump - system do pomiarów, zarządzania i statystyk skoków
 Name:          chronojump
-Version:       1.7.0
+Version:       1.7.1
 Release:       1
 License:       GPL v2+
 Group:         X11/Applications/Games
 Source0:       http://ftp.gnome.org/pub/GNOME/sources/chronojump/1.7/%{name}-%{version}.tar.xz
-# Source0-md5: f2c4bbee62a7b138e4f2ac96d7d6934b
+# Source0-md5: c2e77b7556e992b4b86c35450fc7242a
 Patch0:                %{name}-missing.patch
 URL:           http://chronojump.org/
 BuildRequires: autoconf >= 2.54
@@ -80,11 +80,13 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %doc AUTHORS ChangeLog README manual/{chronojump_crash,chronojump_manual_en,troubleshooting}.pdf
 %lang(es) %doc manual/chronojump_manual_es.pdf
+%attr(755,root,root) %{_bindir}/MFRC522.py
 %attr(755,root,root) %{_bindir}/chronojump
 %attr(755,root,root) %{_bindir}/chronojump-test-accuracy
 %attr(755,root,root) %{_bindir}/chronojump-test-jumps
 %attr(755,root,root) %{_bindir}/chronojump-test-stream
 %attr(755,root,root) %{_bindir}/chronojump_importer.py
+%attr(755,root,root) %{_bindir}/chronojump_rfid_capture.py
 %attr(755,root,root) %{_bindir}/chronojump_mini
 %attr(755,root,root) %{_bindir}/chronopic-firmwarecord
 %dir %{_libdir}/chronojump
This page took 0.111228 seconds and 4 git commands to generate.