From f3461b0fb26a04328d0ce9f1ea459c6a92806d40 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 24 Jun 2015 21:18:50 +0200 Subject: Add status --- misc/main.go | 65 +++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/misc/main.go b/misc/main.go index 9b3997e..fdcb043 100644 --- a/misc/main.go +++ b/misc/main.go @@ -74,37 +74,60 @@ var release = []byte{0x62, 0x00} * 63 00 RLRE-apdu */ -func msg(c net.Conn, b []byte) []byte { - size := int16(len(b)) - enc := binary.BigEndian +/* SystemStatus Request + * A1 0C ROSE-Invoke + * 02 01 01 invokeId present: 1 + * 02 02 00 D3 opcode local: 211 + * 30 03 SystemStatusArgiment + * 0A 01 02 systemStatus normal + */ - fmt.Println(">>> Send") - fmt.Println(hex.Dump(b)) +/* SystemStatus Result + * A2 0B ROSE-ReturnResult + * 02 01 01 invokeId present: 1 + * 30 06 SystemStatusResult + * 02 02 00 D3 opcode local: 211 + * 05 00 noData + */ + +var status = []byte{ + 0xA2, 0x0B, + 0x02, 0x01, 0x01, + 0x30, 0x06, + 0x02, 0x02, 0x00, 0xD3, + 0x05, 0x00, +} + +var endian = binary.BigEndian - if err := binary.Write(c, enc, size); err != nil { +func send(c net.Conn, b []byte) { + size := int16(len(b)) + if err := binary.Write(c, endian, size); err != nil { log.Fatal(err) } - - if err := binary.Write(c, enc, b); err != nil { + if err := binary.Write(c, endian, b); err != nil { log.Fatal(err) } +} - if err := binary.Read(c, enc, &size); err != nil { +func recv(c net.Conn) []byte { + var size int16 + if err := binary.Read(c, endian, &size); err != nil { log.Fatal(err) } - r := make([]byte, size) - - if err := binary.Read(c, enc, r); err != nil { + if err := binary.Read(c, endian, r); err != nil { log.Fatal(err) } - - fmt.Println("<<< Recv") - fmt.Println(hex.Dump(r)) - return r } +func dump(b []byte, dir string) []byte { + fmt.Println(dir) + fmt.Println(hex.Dump(b)) + return b +} + func main() { c, err := net.Dial("tcp", *service) if err != nil { @@ -112,6 +135,12 @@ func main() { } defer c.Close() - defer msg(c, release) - msg(c, associate) + send(c, dump(associate, ">>> Send associate")) + dump(recv(c), "<<< Recv associate") + + dump(recv(c), "<<< Recv status") + send(c, dump(status, ">>> Send status")) + + send(c, dump(release, ">>> Send release")) + dump(recv(c), "<<< Recv release") } -- cgit v1.2.3