in an effort to make the existing code a little easier to understand
and hack on, i've ported some of the stuff i did in libfprint to
vfs101driver. the code is sitting here:
git://github.com/rayl/vfs101driver.git rayl
with this version, you can write code like this:
static int test_case_1 (struct vfs_dev *dev)
{
_( GetVersion(dev));
_( GetConfiguration(dev));
_( try_something(dev));
_( Peek(dev, 0x00009806, 0x04));
_( Poke(dev, 0x00009806, 0x12345678, 0x04));
_( Peek(dev, 0x00009806, 0x04));
_( try_something_else(dev));
return 0;
}
static int try_something (struct vfs_dev *dev)
{
_( GetParam(dev, 0x14));
struct set_param p1[] = {
{ 0x0005, 0x0000 },
{ 0x0006, 0x0000 },
{ 0x0007, 0x0000 },
{ 0x000A, 0x0002 },
};
_( SetParamList(dev, p1, nitems(p1)));
_( GetPrint(dev, 2, type_0));
_( LoadImage(dev));
return 0;
}
static int try_something_else (struct vfs_dev *dev)
{
_( GetParam(dev, 0x11));
_( SetParam(dev, 0x0062, 0x0032));
_( GetPrint(dev, 5000, type_1));
_( LoadImage(dev));
return 0;
}
then you can call test_case_1() and get output like this:
Libusb inititalized!
Searching for device...
Device found!
Checking active kernel driver...
Claiming interface...
claimed interface
Resetting device...
Configuring device...
Device configured!
Entering main cycle...
GetVersion
---> 00 00 00 00 02 00 00
<--- 00 00 00 00 02 00 00 00 56 46 53 20 76 65 72 20 33 2E 37 32 20
20 76 63 33 2D 73 79 73 2E 72 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
GetConfiguration
---> 01 00 00 00 06 00
<--- 01 00 00 00 06 00 00 00 00 00 08 00 0A 0A 03 03 E6 DE E6 E7 F0
F1 F0 EE 03 00 31 00 20 00 12 00 14 00 FF FF 90 00
GetParam
---> 02 00 00 00 04 00 14 00
<--- 02 00 00 00 04 00 00 00 00 00
SetParam
---> 03 00 00 00 05 00 05 00 00 00
<--- 03 00 00 00 05 00 03 00 00 00
SetParam
---> 04 00 00 00 05 00 06 00 00 00
<--- 04 00 00 00 05 00 03 00 00 00
SetParam
---> 05 00 00 00 05 00 07 00 00 00
<--- 05 00 00 00 05 00 03 00 00 00
SetParam
---> 06 00 00 00 05 00 0A 00 02 00
<--- 06 00 00 00 05 00 00 00 02 00
GetPrint
---> 07 00 00 00 03 00 02 00 00 01 00 00 00 01
<--- 07 00 00 00 03 00 00 00
LoadImage
2 packets in 584 bytes
---------------------------- Packet 00000
-----------------------------
HDR: 01 FE
SEQ: 1F 00
???: 19 DE
IMG: 8E 98 96 85 81 87 6F 70 6B 64 7D 78 79 79 77 6E 81 85 6F
87
85 83 7D 8E 88 77 77 77 7B 74 7E 6F 77 85 85 84 7E 7B 7B
76
7D 7B 86 85 84 86 7B 81 83 7F 7B 7C 73 7B 69 76 7C 7C 7F
6F
75 79 7D 7F 83 88 87 86 7C 8C 8F 93 8E 85 81 83 84 82 6C
75
7D 70 73 81 80 86 7F 74 7D 87 77 7B 81 85 81 7A 7B 6F 78
78
77 7F 81 79 7F 8D 7D 7C 84 8F 7C 7D 79 7E 87 83 6F 7D 8C
8A
89 95 82 81 7C 87 79 76 80 80 7C 7C 78 84 80 7E 7D 77 77
78
6D 74 74 78 70 70 8D 67 7F 82 7D 87 6F 82 74 89 76 79 7B
89
7A 7F 87 87 8B 93 83 8F 95 89 87 7F 7F 81 7A 84 8D 87 8A
87
93 84 85 8F 85 8B 7F 97 80 7E 7A 7F 79 80 8B 84 8D 8C 8B
93
???: 00 00
???: 69 68 6B 5C 6D 6B 5B 5A 6D 62 5F 6A 6B 66 6D 7F 6D 6E 68
67
83 5F 6E 78 7B 7B 85 78 74 79 79 7A 76 77 6F 65 7D 6B 76
68
76 76 87 7B 79 81 76 85 75 79 86 75 75 6F 7B 7C 85 7C 76
87
7F 7D 64 70
???: 14 03 6D 00
???: 37 35 35 35 35 35 37 36 36 35 36 35 34 5A 40 40
---------------------------- Packet 00001
-----------------------------
HDR: 01 01
SEQ: 00 00
???: 18 D5
IMG: 8E 9C 97 9A 8B 93 6B 7B 6F 65 77 71 81 7C 78 7B 7D 7D 77
88
84 89 87 84 7C 76 85 80 73 76 7D 6F 86 81 87 7E 84 76 82
82
75 74 82 7D 80 7C 83 8A 81 82 7F 7A 75 77 6D 7D 74 79 87
6F
75 7C 83 86 8B 86 88 83 7E 8D 87 87 82 83 8E 89 7B 7B 6A
76
7F 7B 77 85 7F 82 74 7E 7B 79 7A 77 79 83 80 80 77 7C 7A
7A
76 85 7C 89 7F 7B 7B 79 8C 97 8F 75 62 7D 89 7F 7F 82 7E
8A
89 7D 81 80 89 7F 7B 81 75 77 74 7E 7A 83 79 6F 75 79 7F
73
75 7B 7B 6D 83 7C 82 85 6F 81 7F 8B 82 70 79 82 87 7C 80
7B
7A 83 7C 7C 85 7F 87 89 82 83 83 88 84 87 7E 85 8B 7D 87
80
86 79 82 85 7B 77 81 8D 8A 87 7F 7D 73 8A 85 81 8F 8A 8A
8D
???: 00 00
???: 7E 6A 6D 69 69 60 58 4B 69 64 68 58 75 6F 75 80 81 75 66
6E
7D 79 6E 7B 69 7E 7B 76 6F 78 75 6E 78 78 79 66 78 77 7D
6C
79 7C 7F 75 84 88 69 7B 82 7E 83 6C 69 77 76 7D 7E 77 77
7D
78 7F 6F 88
???: 14 03 6D 00
???: 38 35 35 35 35 36 37 36 37 35 35 35 35 56 43 40
Peek
---> 08 00 00 00 12 00 06 98 00 00 04
<--- 08 00 00 00 12 00 00 00 23 FF 01 EE
Poke
---> 09 00 00 00 13 00 06 98 00 00 78 56 34 12 04
<--- 09 00 00 00 13 00 00 00
Peek
---> 0A 00 00 00 12 00 06 98 00 00 04
<--- 0A 00 00 00 12 00 00 00 78 56 34 12
GetParam
---> 0B 00 00 00 04 00 11 00
<--- 0B 00 00 00 04 00 00 00 00 00
SetParam
---> 0C 00 00 00 05 00 62 00 32 00
<--- 0C 00 00 00 05 00 00 00 32 00
GetPrint
---> 0D 00 00 00 03 00 88 13 01 00 00 00 01 01
<--- 0D 00 00 00 03 00 0C 00
LoadImage
0 packets in 0 bytes
Main cycle complete success!
hopefully this will make it easier to experiment with different
protocol variations.
any feedback is welcome
ray