diff --git a/sl500.go b/sl500.go index 5511ef4..5d85f49 100644 --- a/sl500.go +++ b/sl500.go @@ -80,21 +80,6 @@ func NewConnection(path string, baud baud) (Sl500, error) { return res, err } - _, err = res.RfInitType(Type_ISO) - if err != nil { - return res, err - } - - _, err = res.RfAntennaSta(AntennaOff) - if err != nil { - return res, err - } - - _, err = res.RfGetDeviceNumber() - if err != nil { - return res, err - } - return res, nil } @@ -245,7 +230,7 @@ func readResponse(port *serial.Port) ([]byte, error) { return nil, fmt.Errorf("Response status is fail") } - buf = buf[3:] + buf = buf[4:] ver := byte(0x00) for _, k := range buf[:len(buf)-1] { @@ -256,7 +241,7 @@ func readResponse(port *serial.Port) ([]byte, error) { return nil, fmt.Errorf("Response verification failed") } - buf = buf[4 : len(buf)-1] + buf = buf[5 : len(buf)-1] return buf, nil } diff --git a/sl500_test.go b/sl500_test.go new file mode 100644 index 0000000..e9254db --- /dev/null +++ b/sl500_test.go @@ -0,0 +1,51 @@ +package sl500_api_test + +import ( + "testing" + "sl500-api" + "fmt" + "reflect" +) + +func TestCanReadCard(t *testing.T) { + reader, err := sl500_api.NewConnection("COM3", sl500_api.Baud.Baud19200) + reader.RfAntennaSta(sl500_api.AntennaOn) + if err != nil { + t.Fatal(err) + } + reader.RfLight(sl500_api.ColorYellow) + resp, _ := reader.RfRequest(sl500_api.RequestAll) + + if len(resp) != 2 { + t.Fatalf("Wrong length for rf request %v", resp) + } + + cardId, _ := reader.RfAnticoll() + fmt.Println(cardId) + + cardCapacity, _ := reader.RfSelect(cardId) + + if len(cardCapacity) == 0 { + t.Errorf("Capacity length is wrong %v", cardCapacity) + } + + reader.RfM1Authentication2(sl500_api.AuthModeKeyA, 0, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}) + blockData, err := reader.RfM1Read(0) + + if err != nil { + t.Fatal(err) + } + + if len(blockData) != 16 { + t.Fatalf("Wrong block data length %v", blockData) + } + if !reflect.DeepEqual(blockData[:4], cardId) { + t.Fatalf("CardId missmatch") + } + reader.RfLight(sl500_api.ColorGreen) + + if err != nil { + t.Error(err) + } + +}