content/hp34970a_4.rst

Sat, 17 Sep 2016 02:08:03 +0200

author
David Douard <david.douard@logilab.fr>
date
Sat, 17 Sep 2016 02:08:03 +0200
changeset 66
70aad9a1272b
child 69
56bcb94f6ff5
permissions
-rw-r--r--

[hp34970a] part 4

66
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
1 ==========================================
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
2 HP 34970A Data Acquisition Unit - part 4
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
3 ==========================================
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
4
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
5 :Author: David Douard
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
6 :Category: Electronics
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
7 :Tags: HP, 34970A, DMM, repair, test equipment
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
8 :series: HP 34970A repair
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
9 :series_index: 4
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
10
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
11
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
12 After a summer pause, I'm back on my HP34970A replair project. In
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
13 `the previous post in this series <{filename}/hp34970a_3.rst>`_, I've
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
14 started to reverse ingineer the serial protocol between the CPU board
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
15 and the fonrt panel, and implement a prototype of replacement display.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
16
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
17
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
18 OLED display
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
19 ============
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
20
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
21 I bought the bigest OLED display I could find (at a reasonable price)
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
22 that would fit in the front panel assembly. It's a `blue 256x64 OLED
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
23 display`_ drived by a SSD1322 controler.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
24
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
25 .. _`blue 256x64 OLED display`: http://www.buydisplay.com/default/oled-3-2-inch-displays-module-companies-with-driver-circuit-blue-on-black
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
26
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
27 .. image:: {filename}/images/hp34970a/oled_module.jpg
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
28 :alt: 3"2 blue OLED module used as a replacement display for the HP34970A.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
29
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
30 My first problem was to drive the display from my Nucleo board. I
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
31 couldn't find graphic library that worked directly. I was already
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
32 using the UniGraphic_ library with the small TFT display, so I decided
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
33 to implement support for this OLED module in the library.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
34
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
35 .. _UniGraphic: https://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
36
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
37 I spent quite some time to make this work for several reasons, among
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
38 others:
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
39
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
40 - I was first using my Nucleo F031K6 board; it's nice, it's small, but
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
41 it only have 4k of RAM, so the malloc I as doing in my test code to
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
42 allocate the "framebuffer" in which drawings are done before being
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
43 tranferred to the display module... well let's say if I took time to
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
44 check the return value of the malloc call (which one should always
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
45 do, even on small embedded devices), I would have not lost a couple
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
46 of hours, so to speak (tip: allocating 8k in a 4k RAM will not fit),
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
47
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
48 - The SSD1322 controller is *reasonnably* well documented, but what's
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
49 not documented is how it is used on the OLED display... In fact,
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
50 once I could at least see some pixels on my display, I spent quite
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
51 some time trying to control where my pixels are located on the
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
52 module. There is not that much demo material available for this
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
53 module besides a `poorly written sample C code`_ (in a .txt file!)
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
54 for the 80C51 processor. What's hidden in this file (which I could
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
55 not fing any where else) is the magic 0x1C value which must be given
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
56 as first argument to the SET_COLUMN_ADDR "function" of the SSD1322.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
57
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
58 - I also lost some time trying to implement the support for this module
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
59 as a class derived from UniGraphic's `LCD class`_ (like several
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
60 other supported modules like the SSD1306_), but that was a mistake,
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
61 since this kind of OLED module is too different from both a TFT
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
62 display or a monochrome LCD display. So I've reimplemented the class
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
63 as a derived class of the GraphicDisplay_. This work is far for being
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
64 finished yet (and ready for a *Pull Request* to submit to the
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
65 UniGrahic project), but at least, I can continue my work on the
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
66 HP34970's display.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
67
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
68
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
69 .. _`LCD class`: https://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/file/tip/Display/LCD.h
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
70 .. _SSD1306: https://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/file/tip/Inits/SSD1306.h
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
71 .. _GraphicDisplay: https://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/file/tip/Graphics/GraphicsDisplay.h
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
72 .. _`poorly written sample C code`: http://www.buydisplay.com/download/democode/ER-OLEDM032-1_DemoCode.txt
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
73
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
74
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
75 Improving the serial sniffer
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
76 ============================
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
77
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
78 Once I could draw pixels on my OLED module, I put this code in my
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
79 existing prototype replacing the simple display code I used with the
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
80 TFT module.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
81
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
82 And one problem I already had with the previous "working" prototype
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
83 became bigger: I was missing many characters on the serial bus between
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
84 the CPU and the front panel.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
85
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
86 My first implementation of the protocol sniffing was very tedious and
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
87 poorly written. It was not reading at all the traffic on the Tx line
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
88 (ie the key strokes), so I was never sure if a 0x66 was the beginning
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
89 of a transmission or some payload for which I missed the beginning.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
90
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
91 Using the interrupt-based (asynchronous) BufferedSerial_
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
92 implementation did not help that much.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
93
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
94 So I rewrote this part of the using 2 serial ports, using only the Rx
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
95 line on both of them, one plugged on the Rx line of the serial
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
96 communication, and the other on the Tx line of this comm. Doing so I
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
97 can sniff the whole communication between the CPU and the display
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
98 panel and make a way better protocol interpreter.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
99
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
100 The result was way better than before, and now I was able to detect
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
101 the protocol interpretation errors, but still, I was missing many
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
102 parts of the transmission.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
103
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
104 I ended up to figure that the culprit was my
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
105 ``SSD1322::copy_to_lcd()`` method: it takes almost 20ms to transmit
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
106 the whole display content the module. And with the way my code was
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
107 written, even with interrupt driven serial handlers, these interrupt
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
108 were not captured during the execution of this copy routine.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
109
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
110 At this point, I've started to read a bit more the asynchronous and
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
111 event driven APIs of the mbed platform, but could not clearly see a
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
112 pattern to prevent this long "frozen" periods during which I was
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
113 unable to capture serial communications.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
114
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
115 .. _BufferedSerial: https://developer.mbed.org/users/sam_grove/code/BufferedSerial/
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
116
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
117 I was almost ready to use 2 microcontrollers for the job: one to sniff
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
118 and interpret the serial communication and one to drive the display.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
119
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
120 .. image:: {filename}/images/hp34970a/poc_oled.jpg
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
121 :alt: Improvment of the POC based on the Nucleo F446RE and using a blue OLED module.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
122
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
123 Improving the tasks
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
124 ===================
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
125
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
126 But I've discovered a few days ago that the RTOS project is now part
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
127 of the mbed platform, allowing to use threads instead of pure event
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
128 driven code. So I tried to put the copy_to_lcd routine executions in a
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
129 dedicated thread, and bingo, I've got now something that begins to
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
130 work enough to make it usable:
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
131
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
132 .. dailymotion:: x4tib5s
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
133 :width: 270
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
134 :height: 480
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
135
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
136
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
137 What's next
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
138 ===========
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
139
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
140 There is still a lot of work to do:
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
141
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
142 - improve the display reactivity: I'll probably try to implement
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
143 partial copy of the display instead of sending the whole
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
144 "framebuffer" each time something is changed on the display (the
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
145 SSD1322 allows to specify a "window" in which to send data),
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
146
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
147 - improve overall display organisation and find the missing flags (I
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
148 still have not found the flag values for OC, MIN, MAX, AVG, ONCE,
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
149 AUTO and MEM),
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
150
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
151 - try to install the display module and the Nucleo board in the front
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
152 panel assembly (I don't want to go for a specifically designed PCB,
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
153 at least for now),
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
154
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
155 - publish the code.
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
156
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
157
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
158
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
159
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
160
70aad9a1272b [hp34970a] part 4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
161

mercurial