RBComb 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,584 @@
1
+ import numpy as np;
2
+
3
+ class BoardPinout:
4
+ def getOutputNumber(self, i, j):
5
+ return self.pinNumber[i,j];
6
+
7
+ def __init__(self):
8
+ self.pinNumber = np.zeros([36,16], dtype='int');
9
+ self.pinNumber[0,0] = 63;
10
+ self.pinNumber[0,1] = 62;
11
+ self.pinNumber[0,2] = 61;
12
+ self.pinNumber[0,3] = 51;
13
+ self.pinNumber[0,4] = 50;
14
+ self.pinNumber[0,5] = 49;
15
+ self.pinNumber[0,6] = 39;
16
+ self.pinNumber[0,7] = 38;
17
+ self.pinNumber[0,8] = 37;
18
+ self.pinNumber[0,9] = 27;
19
+ self.pinNumber[0,10] = 26;
20
+ self.pinNumber[0,11] = 25;
21
+ self.pinNumber[0,12] = 15;
22
+ self.pinNumber[0,13] = 14;
23
+ self.pinNumber[0,14] = 13;
24
+ self.pinNumber[0,15] = 3;
25
+ self.pinNumber[1,0] = 60;
26
+ self.pinNumber[1,1] = 59;
27
+ self.pinNumber[1,2] = 58;
28
+ self.pinNumber[1,3] = 48;
29
+ self.pinNumber[1,4] = 47;
30
+ self.pinNumber[1,5] = 46;
31
+ self.pinNumber[1,6] = 36;
32
+ self.pinNumber[1,7] = 35;
33
+ self.pinNumber[1,8] = 34;
34
+ self.pinNumber[1,9] = 24;
35
+ self.pinNumber[1,10] = 23;
36
+ self.pinNumber[1,11] = 22;
37
+ self.pinNumber[1,12] = 12;
38
+ self.pinNumber[1,13] = 11;
39
+ self.pinNumber[1,14] = 10;
40
+ self.pinNumber[1,15] = 2;
41
+ self.pinNumber[2,0] = 57;
42
+ self.pinNumber[2,1] = 56;
43
+ self.pinNumber[2,2] = 55;
44
+ self.pinNumber[2,3] = 45;
45
+ self.pinNumber[2,4] = 44;
46
+ self.pinNumber[2,5] = 43;
47
+ self.pinNumber[2,6] = 33;
48
+ self.pinNumber[2,7] = 32;
49
+ self.pinNumber[2,8] = 31;
50
+ self.pinNumber[2,9] = 21;
51
+ self.pinNumber[2,10] = 20;
52
+ self.pinNumber[2,11] = 19;
53
+ self.pinNumber[2,12] = 9;
54
+ self.pinNumber[2,13] = 8;
55
+ self.pinNumber[2,14] = 7;
56
+ self.pinNumber[2,15] = 1;
57
+ self.pinNumber[3,0] = 54;
58
+ self.pinNumber[3,1] = 53;
59
+ self.pinNumber[3,2] = 52;
60
+ self.pinNumber[3,3] = 42;
61
+ self.pinNumber[3,4] = 41;
62
+ self.pinNumber[3,5] = 40;
63
+ self.pinNumber[3,6] = 30;
64
+ self.pinNumber[3,7] = 29;
65
+ self.pinNumber[3,8] = 28;
66
+ self.pinNumber[3,9] = 18;
67
+ self.pinNumber[3,10] = 17;
68
+ self.pinNumber[3,11] = 16;
69
+ self.pinNumber[3,12] = 6;
70
+ self.pinNumber[3,13] = 5;
71
+ self.pinNumber[3,14] = 4;
72
+ self.pinNumber[3,15] = 0;
73
+ self.pinNumber[4,0] = 127;
74
+ self.pinNumber[4,1] = 126;
75
+ self.pinNumber[4,2] = 125;
76
+ self.pinNumber[4,3] = 115;
77
+ self.pinNumber[4,4] = 114;
78
+ self.pinNumber[4,5] = 113;
79
+ self.pinNumber[4,6] = 103;
80
+ self.pinNumber[4,7] = 102;
81
+ self.pinNumber[4,8] = 101;
82
+ self.pinNumber[4,9] = 91;
83
+ self.pinNumber[4,10] = 90;
84
+ self.pinNumber[4,11] = 89;
85
+ self.pinNumber[4,12] = 79;
86
+ self.pinNumber[4,13] = 78;
87
+ self.pinNumber[4,14] = 77;
88
+ self.pinNumber[4,15] = 67;
89
+ self.pinNumber[5,0] = 124;
90
+ self.pinNumber[5,1] = 123;
91
+ self.pinNumber[5,2] = 122;
92
+ self.pinNumber[5,3] = 112;
93
+ self.pinNumber[5,4] = 111;
94
+ self.pinNumber[5,5] = 110;
95
+ self.pinNumber[5,6] = 100;
96
+ self.pinNumber[5,7] = 99;
97
+ self.pinNumber[5,8] = 98;
98
+ self.pinNumber[5,9] = 88;
99
+ self.pinNumber[5,10] = 87;
100
+ self.pinNumber[5,11] = 86;
101
+ self.pinNumber[5,12] = 76;
102
+ self.pinNumber[5,13] = 75;
103
+ self.pinNumber[5,14] = 74;
104
+ self.pinNumber[5,15] = 66;
105
+ self.pinNumber[6,0] = 121;
106
+ self.pinNumber[6,1] = 120;
107
+ self.pinNumber[6,2] = 119;
108
+ self.pinNumber[6,3] = 109;
109
+ self.pinNumber[6,4] = 108;
110
+ self.pinNumber[6,5] = 107;
111
+ self.pinNumber[6,6] = 97;
112
+ self.pinNumber[6,7] = 96;
113
+ self.pinNumber[6,8] = 95;
114
+ self.pinNumber[6,9] = 85;
115
+ self.pinNumber[6,10] = 84;
116
+ self.pinNumber[6,11] = 83;
117
+ self.pinNumber[6,12] = 73;
118
+ self.pinNumber[6,13] = 72;
119
+ self.pinNumber[6,14] = 71;
120
+ self.pinNumber[6,15] = 65;
121
+ self.pinNumber[7,0] = 118;
122
+ self.pinNumber[7,1] = 117;
123
+ self.pinNumber[7,2] = 116;
124
+ self.pinNumber[7,3] = 106;
125
+ self.pinNumber[7,4] = 105;
126
+ self.pinNumber[7,5] = 104;
127
+ self.pinNumber[7,6] = 94;
128
+ self.pinNumber[7,7] = 93;
129
+ self.pinNumber[7,8] = 92;
130
+ self.pinNumber[7,9] = 82;
131
+ self.pinNumber[7,10] = 81;
132
+ self.pinNumber[7,11] = 80;
133
+ self.pinNumber[7,12] = 70;
134
+ self.pinNumber[7,13] = 69;
135
+ self.pinNumber[7,14] = 68;
136
+ self.pinNumber[7,15] = 64;
137
+ self.pinNumber[8,0] = 191;
138
+ self.pinNumber[8,1] = 190;
139
+ self.pinNumber[8,2] = 189;
140
+ self.pinNumber[8,3] = 179;
141
+ self.pinNumber[8,4] = 178;
142
+ self.pinNumber[8,5] = 177;
143
+ self.pinNumber[8,6] = 167;
144
+ self.pinNumber[8,7] = 166;
145
+ self.pinNumber[8,8] = 165;
146
+ self.pinNumber[8,9] = 155;
147
+ self.pinNumber[8,10] = 154;
148
+ self.pinNumber[8,11] = 153;
149
+ self.pinNumber[8,12] = 143;
150
+ self.pinNumber[8,13] = 142;
151
+ self.pinNumber[8,14] = 141;
152
+ self.pinNumber[8,15] = 131;
153
+ self.pinNumber[9,0] = 188;
154
+ self.pinNumber[9,1] = 187;
155
+ self.pinNumber[9,2] = 186;
156
+ self.pinNumber[9,3] = 176;
157
+ self.pinNumber[9,4] = 175;
158
+ self.pinNumber[9,5] = 174;
159
+ self.pinNumber[9,6] = 164;
160
+ self.pinNumber[9,7] = 163;
161
+ self.pinNumber[9,8] = 162;
162
+ self.pinNumber[9,9] = 152;
163
+ self.pinNumber[9,10] = 151;
164
+ self.pinNumber[9,11] = 150;
165
+ self.pinNumber[9,12] = 140;
166
+ self.pinNumber[9,13] = 139;
167
+ self.pinNumber[9,14] = 138;
168
+ self.pinNumber[9,15] = 130;
169
+ self.pinNumber[10,0] = 185;
170
+ self.pinNumber[10,1] = 184;
171
+ self.pinNumber[10,2] = 183;
172
+ self.pinNumber[10,3] = 173;
173
+ self.pinNumber[10,4] = 172;
174
+ self.pinNumber[10,5] = 171;
175
+ self.pinNumber[10,6] = 161;
176
+ self.pinNumber[10,7] = 160;
177
+ self.pinNumber[10,8] = 159;
178
+ self.pinNumber[10,9] = 149;
179
+ self.pinNumber[10,10] = 148;
180
+ self.pinNumber[10,11] = 147;
181
+ self.pinNumber[10,12] = 137;
182
+ self.pinNumber[10,13] = 136;
183
+ self.pinNumber[10,14] = 135;
184
+ self.pinNumber[10,15] = 129;
185
+ self.pinNumber[11,0] = 182;
186
+ self.pinNumber[11,1] = 181;
187
+ self.pinNumber[11,2] = 180;
188
+ self.pinNumber[11,3] = 170;
189
+ self.pinNumber[11,4] = 169;
190
+ self.pinNumber[11,5] = 168;
191
+ self.pinNumber[11,6] = 158;
192
+ self.pinNumber[11,7] = 157;
193
+ self.pinNumber[11,8] = 156;
194
+ self.pinNumber[11,9] = 146;
195
+ self.pinNumber[11,10] = 145;
196
+ self.pinNumber[11,11] = 144;
197
+ self.pinNumber[11,12] = 134;
198
+ self.pinNumber[11,13] = 133;
199
+ self.pinNumber[11,14] = 132;
200
+ self.pinNumber[11,15] = 128;
201
+ self.pinNumber[12,0] = 255;
202
+ self.pinNumber[12,1] = 254;
203
+ self.pinNumber[12,2] = 253;
204
+ self.pinNumber[12,3] = 243;
205
+ self.pinNumber[12,4] = 242;
206
+ self.pinNumber[12,5] = 241;
207
+ self.pinNumber[12,6] = 231;
208
+ self.pinNumber[12,7] = 230;
209
+ self.pinNumber[12,8] = 229;
210
+ self.pinNumber[12,9] = 219;
211
+ self.pinNumber[12,10] = 218;
212
+ self.pinNumber[12,11] = 217;
213
+ self.pinNumber[12,12] = 207;
214
+ self.pinNumber[12,13] = 206;
215
+ self.pinNumber[12,14] = 205;
216
+ self.pinNumber[12,15] = 195;
217
+ self.pinNumber[13,0] = 252;
218
+ self.pinNumber[13,1] = 251;
219
+ self.pinNumber[13,2] = 250;
220
+ self.pinNumber[13,3] = 240;
221
+ self.pinNumber[13,4] = 239;
222
+ self.pinNumber[13,5] = 238;
223
+ self.pinNumber[13,6] = 228;
224
+ self.pinNumber[13,7] = 227;
225
+ self.pinNumber[13,8] = 226;
226
+ self.pinNumber[13,9] = 216;
227
+ self.pinNumber[13,10] = 215;
228
+ self.pinNumber[13,11] = 214;
229
+ self.pinNumber[13,12] = 204;
230
+ self.pinNumber[13,13] = 203;
231
+ self.pinNumber[13,14] = 202;
232
+ self.pinNumber[13,15] = 194;
233
+ self.pinNumber[14,0] = 249;
234
+ self.pinNumber[14,1] = 248;
235
+ self.pinNumber[14,2] = 247;
236
+ self.pinNumber[14,3] = 237;
237
+ self.pinNumber[14,4] = 236;
238
+ self.pinNumber[14,5] = 235;
239
+ self.pinNumber[14,6] = 225;
240
+ self.pinNumber[14,7] = 224;
241
+ self.pinNumber[14,8] = 223;
242
+ self.pinNumber[14,9] = 213;
243
+ self.pinNumber[14,10] = 212;
244
+ self.pinNumber[14,11] = 211;
245
+ self.pinNumber[14,12] = 201;
246
+ self.pinNumber[14,13] = 200;
247
+ self.pinNumber[14,14] = 199;
248
+ self.pinNumber[14,15] = 193;
249
+ self.pinNumber[15,0] = 246;
250
+ self.pinNumber[15,1] = 245;
251
+ self.pinNumber[15,2] = 244;
252
+ self.pinNumber[15,3] = 234;
253
+ self.pinNumber[15,4] = 233;
254
+ self.pinNumber[15,5] = 232;
255
+ self.pinNumber[15,6] = 222;
256
+ self.pinNumber[15,7] = 221;
257
+ self.pinNumber[15,8] = 220;
258
+ self.pinNumber[15,9] = 210;
259
+ self.pinNumber[15,10] = 209;
260
+ self.pinNumber[15,11] = 208;
261
+ self.pinNumber[15,12] = 198;
262
+ self.pinNumber[15,13] = 197;
263
+ self.pinNumber[15,14] = 196;
264
+ self.pinNumber[15,15] = 192;
265
+ self.pinNumber[16,0] = 319;
266
+ self.pinNumber[16,1] = 318;
267
+ self.pinNumber[16,2] = 317;
268
+ self.pinNumber[16,3] = 307;
269
+ self.pinNumber[16,4] = 306;
270
+ self.pinNumber[16,5] = 305;
271
+ self.pinNumber[16,6] = 295;
272
+ self.pinNumber[16,7] = 294;
273
+ self.pinNumber[16,8] = 293;
274
+ self.pinNumber[16,9] = 283;
275
+ self.pinNumber[16,10] = 282;
276
+ self.pinNumber[16,11] = 281;
277
+ self.pinNumber[16,12] = 271;
278
+ self.pinNumber[16,13] = 270;
279
+ self.pinNumber[16,14] = 269;
280
+ self.pinNumber[16,15] = 259;
281
+ self.pinNumber[17,0] = 316;
282
+ self.pinNumber[17,1] = 315;
283
+ self.pinNumber[17,2] = 314;
284
+ self.pinNumber[17,3] = 304;
285
+ self.pinNumber[17,4] = 303;
286
+ self.pinNumber[17,5] = 302;
287
+ self.pinNumber[17,6] = 292;
288
+ self.pinNumber[17,7] = 291;
289
+ self.pinNumber[17,8] = 290;
290
+ self.pinNumber[17,9] = 280;
291
+ self.pinNumber[17,10] = 279;
292
+ self.pinNumber[17,11] = 278;
293
+ self.pinNumber[17,12] = 268;
294
+ self.pinNumber[17,13] = 267;
295
+ self.pinNumber[17,14] = 266;
296
+ self.pinNumber[17,15] = 258;
297
+ self.pinNumber[18,0] = 313;
298
+ self.pinNumber[18,1] = 312;
299
+ self.pinNumber[18,2] = 311;
300
+ self.pinNumber[18,3] = 301;
301
+ self.pinNumber[18,4] = 300;
302
+ self.pinNumber[18,5] = 299;
303
+ self.pinNumber[18,6] = 289;
304
+ self.pinNumber[18,7] = 288;
305
+ self.pinNumber[18,8] = 287;
306
+ self.pinNumber[18,9] = 277;
307
+ self.pinNumber[18,10] = 276;
308
+ self.pinNumber[18,11] = 275;
309
+ self.pinNumber[18,12] = 265;
310
+ self.pinNumber[18,13] = 264;
311
+ self.pinNumber[18,14] = 263;
312
+ self.pinNumber[18,15] = 257;
313
+ self.pinNumber[19,0] = 310;
314
+ self.pinNumber[19,1] = 309;
315
+ self.pinNumber[19,2] = 308;
316
+ self.pinNumber[19,3] = 298;
317
+ self.pinNumber[19,4] = 297;
318
+ self.pinNumber[19,5] = 296;
319
+ self.pinNumber[19,6] = 286;
320
+ self.pinNumber[19,7] = 285;
321
+ self.pinNumber[19,8] = 284;
322
+ self.pinNumber[19,9] = 274;
323
+ self.pinNumber[19,10] = 273;
324
+ self.pinNumber[19,11] = 272;
325
+ self.pinNumber[19,12] = 262;
326
+ self.pinNumber[19,13] = 261;
327
+ self.pinNumber[19,14] = 260;
328
+ self.pinNumber[19,15] = 256;
329
+ self.pinNumber[20,0] = 383;
330
+ self.pinNumber[20,1] = 382;
331
+ self.pinNumber[20,2] = 381;
332
+ self.pinNumber[20,3] = 371;
333
+ self.pinNumber[20,4] = 370;
334
+ self.pinNumber[20,5] = 369;
335
+ self.pinNumber[20,6] = 359;
336
+ self.pinNumber[20,7] = 358;
337
+ self.pinNumber[20,8] = 357;
338
+ self.pinNumber[20,9] = 347;
339
+ self.pinNumber[20,10] = 346;
340
+ self.pinNumber[20,11] = 345;
341
+ self.pinNumber[20,12] = 335;
342
+ self.pinNumber[20,13] = 334;
343
+ self.pinNumber[20,14] = 333;
344
+ self.pinNumber[20,15] = 323;
345
+ self.pinNumber[21,0] = 380;
346
+ self.pinNumber[21,1] = 379;
347
+ self.pinNumber[21,2] = 378;
348
+ self.pinNumber[21,3] = 368;
349
+ self.pinNumber[21,4] = 367;
350
+ self.pinNumber[21,5] = 366;
351
+ self.pinNumber[21,6] = 356;
352
+ self.pinNumber[21,7] = 355;
353
+ self.pinNumber[21,8] = 354;
354
+ self.pinNumber[21,9] = 344;
355
+ self.pinNumber[21,10] = 343;
356
+ self.pinNumber[21,11] = 342;
357
+ self.pinNumber[21,12] = 332;
358
+ self.pinNumber[21,13] = 331;
359
+ self.pinNumber[21,14] = 330;
360
+ self.pinNumber[21,15] = 322;
361
+ self.pinNumber[22,0] = 377;
362
+ self.pinNumber[22,1] = 376;
363
+ self.pinNumber[22,2] = 375;
364
+ self.pinNumber[22,3] = 365;
365
+ self.pinNumber[22,4] = 364;
366
+ self.pinNumber[22,5] = 363;
367
+ self.pinNumber[22,6] = 353;
368
+ self.pinNumber[22,7] = 352;
369
+ self.pinNumber[22,8] = 351;
370
+ self.pinNumber[22,9] = 341;
371
+ self.pinNumber[22,10] = 340;
372
+ self.pinNumber[22,11] = 339;
373
+ self.pinNumber[22,12] = 329;
374
+ self.pinNumber[22,13] = 328;
375
+ self.pinNumber[22,14] = 327;
376
+ self.pinNumber[22,15] = 321;
377
+ self.pinNumber[23,0] = 374;
378
+ self.pinNumber[23,1] = 373;
379
+ self.pinNumber[23,2] = 372;
380
+ self.pinNumber[23,3] = 362;
381
+ self.pinNumber[23,4] = 361;
382
+ self.pinNumber[23,5] = 360;
383
+ self.pinNumber[23,6] = 350;
384
+ self.pinNumber[23,7] = 349;
385
+ self.pinNumber[23,8] = 348;
386
+ self.pinNumber[23,9] = 338;
387
+ self.pinNumber[23,10] = 337;
388
+ self.pinNumber[23,11] = 336;
389
+ self.pinNumber[23,12] = 326;
390
+ self.pinNumber[23,13] = 325;
391
+ self.pinNumber[23,14] = 324;
392
+ self.pinNumber[23,15] = 320;
393
+ self.pinNumber[24,0] = 447;
394
+ self.pinNumber[24,1] = 446;
395
+ self.pinNumber[24,2] = 445;
396
+ self.pinNumber[24,3] = 435;
397
+ self.pinNumber[24,4] = 434;
398
+ self.pinNumber[24,5] = 433;
399
+ self.pinNumber[24,6] = 423;
400
+ self.pinNumber[24,7] = 422;
401
+ self.pinNumber[24,8] = 421;
402
+ self.pinNumber[24,9] = 411;
403
+ self.pinNumber[24,10] = 410;
404
+ self.pinNumber[24,11] = 409;
405
+ self.pinNumber[24,12] = 399;
406
+ self.pinNumber[24,13] = 398;
407
+ self.pinNumber[24,14] = 397;
408
+ self.pinNumber[24,15] = 387;
409
+ self.pinNumber[25,0] = 444;
410
+ self.pinNumber[25,1] = 443;
411
+ self.pinNumber[25,2] = 442;
412
+ self.pinNumber[25,3] = 432;
413
+ self.pinNumber[25,4] = 431;
414
+ self.pinNumber[25,5] = 430;
415
+ self.pinNumber[25,6] = 420;
416
+ self.pinNumber[25,7] = 419;
417
+ self.pinNumber[25,8] = 418;
418
+ self.pinNumber[25,9] = 408;
419
+ self.pinNumber[25,10] = 407;
420
+ self.pinNumber[25,11] = 406;
421
+ self.pinNumber[25,12] = 396;
422
+ self.pinNumber[25,13] = 395;
423
+ self.pinNumber[25,14] = 394;
424
+ self.pinNumber[25,15] = 386;
425
+ self.pinNumber[26,0] = 441;
426
+ self.pinNumber[26,1] = 440;
427
+ self.pinNumber[26,2] = 439;
428
+ self.pinNumber[26,3] = 429;
429
+ self.pinNumber[26,4] = 428;
430
+ self.pinNumber[26,5] = 427;
431
+ self.pinNumber[26,6] = 417;
432
+ self.pinNumber[26,7] = 416;
433
+ self.pinNumber[26,8] = 415;
434
+ self.pinNumber[26,9] = 405;
435
+ self.pinNumber[26,10] = 404;
436
+ self.pinNumber[26,11] = 403;
437
+ self.pinNumber[26,12] = 393;
438
+ self.pinNumber[26,13] = 392;
439
+ self.pinNumber[26,14] = 391;
440
+ self.pinNumber[26,15] = 385;
441
+ self.pinNumber[27,0] = 438;
442
+ self.pinNumber[27,1] = 437;
443
+ self.pinNumber[27,2] = 436;
444
+ self.pinNumber[27,3] = 426;
445
+ self.pinNumber[27,4] = 425;
446
+ self.pinNumber[27,5] = 424;
447
+ self.pinNumber[27,6] = 414;
448
+ self.pinNumber[27,7] = 413;
449
+ self.pinNumber[27,8] = 412;
450
+ self.pinNumber[27,9] = 402;
451
+ self.pinNumber[27,10] = 401;
452
+ self.pinNumber[27,11] = 400;
453
+ self.pinNumber[27,12] = 390;
454
+ self.pinNumber[27,13] = 389;
455
+ self.pinNumber[27,14] = 388;
456
+ self.pinNumber[27,15] = 384;
457
+ self.pinNumber[28,0] = 511;
458
+ self.pinNumber[28,1] = 510;
459
+ self.pinNumber[28,2] = 509;
460
+ self.pinNumber[28,3] = 499;
461
+ self.pinNumber[28,4] = 498;
462
+ self.pinNumber[28,5] = 497;
463
+ self.pinNumber[28,6] = 487;
464
+ self.pinNumber[28,7] = 486;
465
+ self.pinNumber[28,8] = 485;
466
+ self.pinNumber[28,9] = 475;
467
+ self.pinNumber[28,10] = 474;
468
+ self.pinNumber[28,11] = 473;
469
+ self.pinNumber[28,12] = 463;
470
+ self.pinNumber[28,13] = 462;
471
+ self.pinNumber[28,14] = 461;
472
+ self.pinNumber[28,15] = 451;
473
+ self.pinNumber[29,0] = 508;
474
+ self.pinNumber[29,1] = 507;
475
+ self.pinNumber[29,2] = 506;
476
+ self.pinNumber[29,3] = 496;
477
+ self.pinNumber[29,4] = 495;
478
+ self.pinNumber[29,5] = 494;
479
+ self.pinNumber[29,6] = 484;
480
+ self.pinNumber[29,7] = 483;
481
+ self.pinNumber[29,8] = 482;
482
+ self.pinNumber[29,9] = 472;
483
+ self.pinNumber[29,10] = 471;
484
+ self.pinNumber[29,11] = 470;
485
+ self.pinNumber[29,12] = 460;
486
+ self.pinNumber[29,13] = 459;
487
+ self.pinNumber[29,14] = 458;
488
+ self.pinNumber[29,15] = 450;
489
+ self.pinNumber[30,0] = 505;
490
+ self.pinNumber[30,1] = 504;
491
+ self.pinNumber[30,2] = 503;
492
+ self.pinNumber[30,3] = 493;
493
+ self.pinNumber[30,4] = 492;
494
+ self.pinNumber[30,5] = 491;
495
+ self.pinNumber[30,6] = 481;
496
+ self.pinNumber[30,7] = 480;
497
+ self.pinNumber[30,8] = 479;
498
+ self.pinNumber[30,9] = 469;
499
+ self.pinNumber[30,10] = 468;
500
+ self.pinNumber[30,11] = 467;
501
+ self.pinNumber[30,12] = 457;
502
+ self.pinNumber[30,13] = 456;
503
+ self.pinNumber[30,14] = 455;
504
+ self.pinNumber[30,15] = 449;
505
+ self.pinNumber[31,0] = 502;
506
+ self.pinNumber[31,1] = 501;
507
+ self.pinNumber[31,2] = 500;
508
+ self.pinNumber[31,3] = 490;
509
+ self.pinNumber[31,4] = 489;
510
+ self.pinNumber[31,5] = 488;
511
+ self.pinNumber[31,6] = 478;
512
+ self.pinNumber[31,7] = 477;
513
+ self.pinNumber[31,8] = 476;
514
+ self.pinNumber[31,9] = 466;
515
+ self.pinNumber[31,10] = 465;
516
+ self.pinNumber[31,11] = 464;
517
+ self.pinNumber[31,12] = 454;
518
+ self.pinNumber[31,13] = 453;
519
+ self.pinNumber[31,14] = 452;
520
+ self.pinNumber[31,15] = 448;
521
+ self.pinNumber[32,0] = 575;
522
+ self.pinNumber[32,1] = 574;
523
+ self.pinNumber[32,2] = 573;
524
+ self.pinNumber[32,3] = 563;
525
+ self.pinNumber[32,4] = 562;
526
+ self.pinNumber[32,5] = 561;
527
+ self.pinNumber[32,6] = 551;
528
+ self.pinNumber[32,7] = 550;
529
+ self.pinNumber[32,8] = 549;
530
+ self.pinNumber[32,9] = 539;
531
+ self.pinNumber[32,10] = 538;
532
+ self.pinNumber[32,11] = 537;
533
+ self.pinNumber[32,12] = 527;
534
+ self.pinNumber[32,13] = 526;
535
+ self.pinNumber[32,14] = 525;
536
+ self.pinNumber[32,15] = 515;
537
+ self.pinNumber[33,0] = 572;
538
+ self.pinNumber[33,1] = 571;
539
+ self.pinNumber[33,2] = 570;
540
+ self.pinNumber[33,3] = 560;
541
+ self.pinNumber[33,4] = 559;
542
+ self.pinNumber[33,5] = 558;
543
+ self.pinNumber[33,6] = 548;
544
+ self.pinNumber[33,7] = 547;
545
+ self.pinNumber[33,8] = 546;
546
+ self.pinNumber[33,9] = 536;
547
+ self.pinNumber[33,10] = 535;
548
+ self.pinNumber[33,11] = 534;
549
+ self.pinNumber[33,12] = 524;
550
+ self.pinNumber[33,13] = 523;
551
+ self.pinNumber[33,14] = 522;
552
+ self.pinNumber[33,15] = 514;
553
+ self.pinNumber[34,0] = 569;
554
+ self.pinNumber[34,1] = 568;
555
+ self.pinNumber[34,2] = 567;
556
+ self.pinNumber[34,3] = 557;
557
+ self.pinNumber[34,4] = 556;
558
+ self.pinNumber[34,5] = 555;
559
+ self.pinNumber[34,6] = 545;
560
+ self.pinNumber[34,7] = 544;
561
+ self.pinNumber[34,8] = 543;
562
+ self.pinNumber[34,9] = 533;
563
+ self.pinNumber[34,10] = 532;
564
+ self.pinNumber[34,11] = 531;
565
+ self.pinNumber[34,12] = 521;
566
+ self.pinNumber[34,13] = 520;
567
+ self.pinNumber[34,14] = 519;
568
+ self.pinNumber[34,15] = 513;
569
+ self.pinNumber[35,0] = 566;
570
+ self.pinNumber[35,1] = 565;
571
+ self.pinNumber[35,2] = 564;
572
+ self.pinNumber[35,3] = 554;
573
+ self.pinNumber[35,4] = 553;
574
+ self.pinNumber[35,5] = 552;
575
+ self.pinNumber[35,6] = 542;
576
+ self.pinNumber[35,7] = 541;
577
+ self.pinNumber[35,8] = 540;
578
+ self.pinNumber[35,9] = 530;
579
+ self.pinNumber[35,10] = 529;
580
+ self.pinNumber[35,11] = 528;
581
+ self.pinNumber[35,12] = 518;
582
+ self.pinNumber[35,13] = 517;
583
+ self.pinNumber[35,14] = 516;
584
+ self.pinNumber[35,15] = 512;
@@ -0,0 +1,35 @@
1
+ import numpy as np;
2
+
3
+ class BoardUnits:
4
+ def __init__(self, masterClock= 100.0e6, clockDivider = 713.0):
5
+ self.boardMasterClock = masterClock;
6
+ self.clockDivider = clockDivider;
7
+ self.sampleRate = self.boardMasterClock/self.clockDivider;
8
+
9
+ def convertFrequencyIntegerToHz(self, integerFrequency):
10
+ return integerFrequency*float(self.sampleRate)/float(2**32);
11
+
12
+ def convertFrequencyHzToInteger(self, hzFrequency):
13
+ return int(np.round(hzFrequency*float(2**32)/float(self.sampleRate)));
14
+
15
+ def convertTimeToSteps(self, time):
16
+ return int(np.round(time*float(self.sampleRate)));
17
+
18
+ def convertFrequencyRangeToSweepSpeed(self, frequencyStart, frequencyEnd, sweepDuration):
19
+ return int(np.round((frequencyEnd - frequencyStart)*float(2**32)/((float(self.sampleRate)**2)*sweepDuration)));
20
+
21
+ def convertDegreesPhaseToInteger(self, degreesPhase):
22
+ return int(np.round((2**32)*np.mod(degreesPhase/360.0,1.0)));
23
+
24
+ def convertNormalizedAmplitudeToInteger(self, amplitude):
25
+ if amplitude < 0:
26
+ return 1 + int(np.ceil(amplitude*(2**17-1)));
27
+ else:
28
+ return int(np.floor(amplitude*(2**17-1)));
29
+
30
+ def convertBraidingDurationToIntegerSpeed(self, braidDuration):
31
+ return int(np.round(float(2**28)/(self.sampleRate*braidDuration)));
32
+
33
+ def convertIntegerSpeedToBraidDuration(self, integerSpeed):
34
+ return float(2**28)/(self.sampleRate*float(integerSpeed));
35
+
@@ -0,0 +1,52 @@
1
+ import numpy as np;
2
+
3
+ class FunctionInterpolator:
4
+ def __init__(self):
5
+ self.yScaling = (2**17-1);
6
+ self.fpgaDependentRange = np.arange(-(2**17),(2**17),64, dtype='float');
7
+ self.functionDependentRange = np.arange(0,0.25*0.25,64.0*0.25*0.25/(2**18));
8
+ self.divRatio = 2**18;
9
+ self.interpolationMatrix = ((np.array((np.transpose(np.array([
10
+ ((self.fpgaDependentRange**0)),
11
+ ((self.fpgaDependentRange**1)/(self.divRatio**1)),
12
+ ((self.fpgaDependentRange**2)/(self.divRatio**2)),
13
+ ((self.fpgaDependentRange**3)/(self.divRatio**3)),
14
+ ((self.fpgaDependentRange**4)/(self.divRatio**4)),
15
+ ((self.fpgaDependentRange**5)/(self.divRatio**5))]))), dtype='float')))/self.yScaling;
16
+
17
+ # Here we must add safety to check that there are no overflows:
18
+ # 1. In the parameters
19
+ # 2. In the final results
20
+ # 3. In the intermediate calculations
21
+ def performInterpolation(self, function):
22
+ result = np.zeros((6,16), dtype='float');
23
+ for ind in range(16):
24
+ result[:,ind] = np.round(np.linalg.lstsq(self.interpolationMatrix,
25
+ function(float(ind)*0.25*0.25+self.functionDependentRange), rcond=None)[0]);
26
+ return np.array(result,dtype='int');
27
+
28
+ # Here we check for overflows in intermediate and final results
29
+ def performPartialValidation(self, interpolationResults, part):
30
+ result = np.zeros(len(self.fpgaDependentRange));
31
+ coefficients = interpolationResults[:,part];
32
+ for i in range(6):
33
+ result = result*self.fpgaDependentRange;
34
+ result = np.array(result/self.divRatio, dtype = 'int');
35
+ result = result + coefficients[len(coefficients)-i-1];
36
+ return result;
37
+
38
+ def performValidation(self, interpolationResults):
39
+ for i in range(16):
40
+ if i == 0:
41
+ p1 = self.performPartialValidation(interpolationResults,i);
42
+ else:
43
+ p1 = np.append(p1, self.performPartialValidation(interpolationResults,i));
44
+ return p1;
45
+
46
+ def getXRange(self):
47
+ return np.arange(0,1.0,64*0.25*0.25/(2**18));
48
+
49
+ def getConstantFunction(self, offsetValue):
50
+ func = lambda x: (offsetValue+np.zeros(np.shape(x),dtype='float'));
51
+ return self.performInterpolation(func);
52
+
File without changes
@@ -0,0 +1,103 @@
1
+ import numpy as np;
2
+ class LaserInterface:
3
+ def __init__(self, bridgeLink):
4
+ self.bridgeLink = bridgeLink;
5
+ self.multvec = np.array([1, 2**8, 2**16, 2**24, 2*32, 2**40]);
6
+
7
+ def _internal_vectToScalar(self, data):
8
+ cumsum = 0;
9
+ for i in range(6):
10
+ cumsum = cumsum*256 + data[5-i];
11
+ return cumsum;
12
+
13
+ def _internal_numericalResponseCommand(self, command):
14
+ self.bridgeLink._internal_sendCommand(command);
15
+ data = self.bridgeLink.getData(6);
16
+ if len(data) < 6:
17
+ print('Insufficient data received. Check that the laser is selected.');
18
+ return 0;
19
+ return self._internal_vectToScalar(data);
20
+
21
+ def requestDisplacement(self, axis):
22
+ if axis < 0 or axis > 3:
23
+ print('Axis must be 1, 2 or 3');
24
+ return 0;
25
+ return self._internal_numericalResponseCommand(53 + axis);
26
+
27
+ #DEPRECATED
28
+ def scheduleAcquisition(self, axis, delay):
29
+ if axis < 0 or axis > 3:
30
+ print('Axis must be 1, 2 or 3');
31
+ return 0;
32
+ self.bridgeLink._internal_setNX_SINGEN_REG(delay+((2**30)*(axis-1)));
33
+ self.bridgeLink._internal_sendCommand(57);
34
+
35
+ #DEPRECATED
36
+ def requestTimeTrace(self):
37
+ result = np.zeros((2**15,2), dtype='float');
38
+ self.bridgeLink.flushInput()
39
+ self.bridgeLink._internal_setNX_SINGEN_REG(2**15+2**31);
40
+ self.bridgeLink._internal_sendCommand(61)
41
+ self.bridgeLink._internal_setNX_SINGEN_REG(0);
42
+ self.bridgeLink._internal_sendCommand(58);
43
+ buff = self.bridgeLink.getData((2**15)*6);
44
+ self.bridgeLink._internal_setNX_SINGEN_REG(2**16);
45
+ self.bridgeLink._internal_sendCommand(61)
46
+ buff += self.bridgeLink.getData((2**15)*6);
47
+ currentTime = 0;
48
+ for i in range(2**15):
49
+ currentIndex = i*12;
50
+ disp = self._internal_vectToScalar(buff[currentIndex:(currentIndex+6)]);
51
+ deltaT = self._internal_vectToScalar(buff[(currentIndex+6):(currentIndex+12)]);
52
+ currentTime += deltaT;
53
+ result[i,0] = currentTime;
54
+ result[i,1] = disp;
55
+ return result;
56
+
57
+ #Carli time trace request
58
+ def requestTimeTraceCarli(self):
59
+ result = np.zeros((self.length,2), dtype='float')
60
+ #request data
61
+ self.bridgeLink._internal_setNX_SINGEN_REG(0)
62
+ self.bridgeLink._internal_sendCommand(58)
63
+ #get data
64
+ buff = self.bridgeLink.getData((self.length)*12)
65
+ print(f'requested: {self.length}, gotten: {int(len(buff)/12)}')
66
+ print(len(buff))
67
+ if self.length != int(len(buff)/12):
68
+ print("Communication failure")
69
+ return None
70
+ #process data
71
+ currentTime = 0
72
+ for i in range(int(self.length)):
73
+ if i % 100000 == 0:
74
+ print(i)
75
+ currentIndex = i*12
76
+ disp = self._internal_vectToScalar(buff[currentIndex:(currentIndex+6)])
77
+ deltaT = self._internal_vectToScalar(buff[(currentIndex+6):(currentIndex+12)])
78
+ currentTime += deltaT
79
+ result[i,0] = currentTime
80
+ result[i,1] = disp
81
+ return result
82
+
83
+ #Carli acquisition schedule
84
+ def scheduleAcquisitionCarli(self, axis, delay, length=2**16):
85
+ #set length of acquisition
86
+ self.length = length
87
+ self.bridgeLink.flushInput()
88
+ self.bridgeLink._internal_setNX_SINGEN_REG(length+2**31)
89
+ self.bridgeLink._internal_sendCommand(61)
90
+ #schedule acquisition
91
+ if axis < 0 or axis > 3:
92
+ print("Axis must be 1, 2 or 3")
93
+ return 0;
94
+ self.bridgeLink._internal_setNX_SINGEN_REG(delay+((2**30)*(axis-1)))
95
+ self.bridgeLink._internal_sendCommand(57)
96
+
97
+ #OUT OF ORDER
98
+ def isAcquisitionFinished(self):
99
+ return self._internal_numericalResponseCommand(60) == 32768;
100
+
101
+ def requestTimeSinceMeasurementEnded(self):
102
+ return self._internal_numericalResponseCommand(59);
103
+
RBComb/RBComb576.py ADDED
@@ -0,0 +1,131 @@
1
+ import numpy as np;
2
+
3
+ class RBComb576:
4
+ def __init__(self, bridgeLink):
5
+ self.bridgeLink = bridgeLink;
6
+ self.bridge2Comps = np.zeros([6,16], dtype='int');
7
+ self.bridge2Comps[:] = 2**18;
8
+ self.bridge2Comps[4,:] = 2**8;
9
+ self.bridge2Comps[5,:] = 2**6;
10
+ self.braidingOrder = np.array([1]*16,dtype='int');
11
+ for i in range(15):
12
+ self.braidingOrder[i+1] = 2*self.braidingOrder[i];
13
+
14
+ def sendDataToAllDACs(self, dataToSend, ldacBubble=False):
15
+ if ldacBubble:
16
+ self.bridgeLink._internal_setNX_SINGEN_REG(dataToSend + 2**24);
17
+ else:
18
+ self.bridgeLink._internal_setNX_SINGEN_REG(dataToSend);
19
+ self.bridgeLink._internal_sendCommand(25);
20
+
21
+ def setGain(self, highGain):
22
+ # True means gain of 2, false means gain of 1
23
+ if highGain:
24
+ self.sendDataToAllDACs(2**22 + 2**21 + 2**20 + 2**2);
25
+ else:
26
+ self.sendDataToAllDACs(2**22 + 2**21 + 2**20);
27
+
28
+ def outputRampUp(self):
29
+ self.bridgeLink._internal_sendCommand(28);
30
+
31
+ def outputRampDown(self):
32
+ self.bridgeLink._internal_sendCommand(29);
33
+
34
+ def setPhase(self, sineGenerator, newPhase):
35
+ self.bridgeLink._internal_setNX_SINGEN_REG(newPhase);
36
+ self.bridgeLink._internal_sendCommand(0+sineGenerator);
37
+
38
+ def setFrequency(self, sineGenerator, newFrequency):
39
+ self.bridgeLink._internal_setNX_SINGEN_REG(newFrequency);
40
+ self.bridgeLink._internal_sendCommand(4+sineGenerator);
41
+
42
+ def setSweepFrequencyStep(self, sineGenerator, newFrequencyStep):
43
+ self.bridgeLink._internal_setNX_SINGEN_REG(newFrequencyStep);
44
+ self.bridgeLink._internal_sendCommand(8+sineGenerator);
45
+
46
+ def setSweepFrequencyMax(self, sineGenerator, newFrequencyMax):
47
+ self.bridgeLink._internal_setNX_SINGEN_REG(newFrequencyMax);
48
+ self.bridgeLink._internal_sendCommand(16+sineGenerator);
49
+
50
+ def setBraidingLength(self, newBraidingLength):
51
+ self.bridgeLink._internal_setDataBuff(newBraidingLength);
52
+ self.bridgeLink._internal_sendCommand(52);
53
+
54
+ def setBraidingFrame(self, newBraidingFrame):
55
+ self.bridgeLink._internal_setNX_SINGEN_REG(newBraidingFrame);
56
+ self.bridgeLink._internal_sendCommand(59);
57
+
58
+ def setBraidingSpeed(self, newBraidingSpeed):
59
+ self.bridgeLink._internal_setNX_SINGEN_REG(newBraidingSpeed);
60
+ self.bridgeLink._internal_sendCommand(60);
61
+
62
+ def setBraidingOrder(self, braidingOrder):
63
+ self.bridgeLink._internal_setDataBuff(int(np.sum(braidingOrder*self.braidingOrder[0:len(braidingOrder)])));
64
+ self.bridgeLink._internal_sendCommand(51);
65
+
66
+ def setBraidingAB(self, braidingAB):
67
+ self.bridgeLink._internal_setDataBuff(int(np.sum(braidingAB*self.braidingOrder[0:len(braidingAB)])));
68
+ self.bridgeLink._internal_sendCommand(50);
69
+
70
+ def setBraidingHold(self, braidingHold):
71
+ self.bridgeLink._internal_setDataBuff(int(np.sum(braidingHold*self.braidingOrder[0:len(braidingHold)])));
72
+ self.bridgeLink._internal_sendCommand(53);
73
+
74
+ def setCurrentState(self, newState):
75
+ self.bridgeLink._internal_setDataBuff(int(np.sum(newState*self.braidingOrder[0:5])));
76
+ self.bridgeLink._internal_sendCommand(61);
77
+
78
+ def setNextState(self, newState, delay):
79
+ self.bridgeLink._internal_setNX_SINGEN_REG(delay);
80
+ self.bridgeLink._internal_setDataBuff(int(np.sum(newState*self.braidingOrder[0:5])));
81
+ self.bridgeLink._internal_sendCommand(62);
82
+
83
+ def setTaylorCoefficients(self, output, BSequence, coeffs):
84
+ # Convert coefficients to two's complement
85
+ coeffs2Comp = np.array(coeffs, dtype = 'int');
86
+ coeffs2Comp[coeffs < 0] += self.bridge2Comps[coeffs < 0];
87
+ coeffs2Comp[4,:] = (2**8)*coeffs2Comp[4,:] + coeffs2Comp[5,:];
88
+ for j in range(16):
89
+ braidingAddress = output*32+j;
90
+ if BSequence:
91
+ braidingAddress += 16;
92
+ self.bridgeLink._internal_setBraidingMemoryAddress(braidingAddress)
93
+ # Here we will add the two's complement and coefficient merging functions
94
+ for i in range(5):
95
+ currentCoeff = coeffs2Comp[i,j];
96
+ self.bridgeLink._internal_setDataBuff(currentCoeff);
97
+ self.bridgeLink._internal_sendCommand(58-i);
98
+
99
+ def setAmplitude(self, sineGenerator, channelNum, targetAmplitude):
100
+ # Conversion to two's complement
101
+ if targetAmplitude < 0:
102
+ targetAmplitude = 262144 + targetAmplitude;
103
+
104
+ transferBuffer = np.arange(0,7, dtype='uint8')
105
+
106
+ # Set the 6 lsb's of the "Data" register to the 5 lsbs of the channel num
107
+ transferBuffer[0] = (channelNum % 64);
108
+
109
+ # Set the bits 11 to 6 of the "Data" register to the bits 11-6 of the channel num
110
+ channelNum = int(channelNum / 64);
111
+ transferBuffer[1] = 64 + (channelNum % 64);
112
+
113
+ # Transfer the 9 lsb's of the data register into the address register
114
+ transferBuffer[2] = 192 + 20;
115
+
116
+ # Set the 6 lsb's of the "Data" register to the 5 lsbs of the amplitude num
117
+ transferBuffer[3] = (targetAmplitude % 64);
118
+
119
+ # Set the bits 11 to 6 of the "Data" register to the bits 11-6 of the amplitude
120
+ targetAmplitude = int(targetAmplitude / 64);
121
+ transferBuffer[4] = 64 + (targetAmplitude % 64);
122
+
123
+ # Set the bits 17 to 12 of the "Data" register to the bits 17-12 of the amplitude
124
+ targetAmplitude = int(targetAmplitude / 64);
125
+ transferBuffer[5] = 128 + (targetAmplitude % 64);
126
+
127
+ # Perform memory write-up
128
+ transferBuffer[6] = 192 + 12 + sineGenerator;
129
+
130
+ # Send it to the board
131
+ self.bridgeLink.sendArray(transferBuffer);
RBComb/SerialBridge.py ADDED
@@ -0,0 +1,75 @@
1
+ import serial as serial;
2
+ import numpy as np;
3
+
4
+ class SerialBridge:
5
+ def __init__(self, serialPort, alwaysOpen=False, baudRate=5000000):
6
+ self.serialPort = serialPort;
7
+ self.alwaysOpen = alwaysOpen;
8
+ self.baudRate = baudRate
9
+ if self.alwaysOpen:
10
+ self.serialHandle = serial.Serial(self.serialPort, self.baudRate, bytesize=8, stopbits=2, timeout=500);
11
+
12
+ def sendArray(self, transferBuffer):
13
+ if not self.alwaysOpen:
14
+ self.serialHandle = serial.Serial(self.serialPort, self.baudRate, bytesize=8, stopbits=2, timeout=1);
15
+ self.serialHandle.reset_input_buffer();
16
+ self.serialHandle.write(transferBuffer.astype('ubyte'));
17
+ if not self.alwaysOpen:
18
+ self.closeConnection();
19
+
20
+ def getData(self, length):
21
+ return self.serialHandle.read(length);
22
+
23
+ def flushInput(self):
24
+ self.serialHandle.reset_input_buffer();
25
+
26
+ def _internal_sendCommand(self, command):
27
+ transferBuffer = np.arange(0,1, dtype='uint8')
28
+ transferBuffer[0] = 192 + command;
29
+ self.sendArray(transferBuffer);
30
+
31
+ def _internal_setDataBuff(self, dataToFill):
32
+ transferBuffer = np.arange(0,3, dtype='uint8')
33
+ # Set the 6 lsb's of the "Data" register
34
+ transferBuffer[0] = (dataToFill % 64);
35
+
36
+ # Set the bits 11 to 6 of the "Data" register
37
+ dataToFill = int(dataToFill / 64);
38
+ transferBuffer[1] = 64 + (dataToFill % 64);
39
+
40
+ # Set the bits 17 to 12 of the "Data" register
41
+ dataToFill = int(dataToFill / 64);
42
+ transferBuffer[2] = 128 + (dataToFill % 64);
43
+ self.sendArray(transferBuffer);
44
+
45
+ def _internal_setNX_SINGEN_REG(self, dataToFill):
46
+ # Set lower 12 bits
47
+ self._internal_setDataBuff(dataToFill % (2**18))
48
+ self._internal_sendCommand(22);
49
+ # Set upper 12 bits
50
+ self._internal_setDataBuff(int(dataToFill/(2**18)) % (2**18))
51
+ self._internal_sendCommand(23);
52
+
53
+ def _internal_setBraidingMemoryAddress(self, braidingAddress):
54
+ self._internal_setDataBuff(braidingAddress);
55
+ self._internal_sendCommand(20);
56
+
57
+ def selectBoard(self, boardID):
58
+ data = np.arange(0,1, dtype='uint8')
59
+ data[0] = boardID + 224;
60
+ self.sendArray(data);
61
+
62
+ def selectAllBoards(self):
63
+ self.selectBoard(15);
64
+
65
+ def selectLaser(self):
66
+ self.selectBoard(14);
67
+
68
+ def closeConnection(self):
69
+ self.serialHandle.close();
70
+
71
+ def enableClock(self):
72
+ self._internal_sendCommand(26);
73
+
74
+ def disableClock(self):
75
+ self._internal_sendCommand(27);
RBComb/__init__.py ADDED
File without changes
@@ -0,0 +1,18 @@
1
+ Metadata-Version: 2.4
2
+ Name: RBComb
3
+ Version: 0.2.0
4
+ Summary: API to talk to the RBComb bridge
5
+ Home-page: https://gitlab.phys.ethz.ch/code/experiment/rbcomb-fpgaCode/
6
+ Author: Pascal Engeler
7
+ Author-email: huberse@phys.ethz.ch
8
+ Requires-Python: >=3.8
9
+ Description-Content-Type: text/markdown
10
+ Requires-Dist: numpy>=1.18.0
11
+ Requires-Dist: pyserial>=3.5
12
+ Dynamic: author
13
+ Dynamic: author-email
14
+ Dynamic: description-content-type
15
+ Dynamic: home-page
16
+ Dynamic: requires-dist
17
+ Dynamic: requires-python
18
+ Dynamic: summary
@@ -0,0 +1,12 @@
1
+ RBComb/LaserInterface.py,sha256=4IxZurrfZCtF2Pv6HhGZLrkJAGCpNWMp0Go1_2lta6g,4016
2
+ RBComb/RBComb576.py,sha256=JFwbSe4MLAdRr_FdrTR1j9wcpucBZCH6x_uxw-T3ugo,5884
3
+ RBComb/SerialBridge.py,sha256=feIpNgm-d-HGzGE4V6qtjBaIHE-kvdUu25YUafQCpq4,2687
4
+ RBComb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ RBComb/Helper/BoardPinout.py,sha256=rEmPyseujZPDVvCBSM8ZxDEEQ7k3aSytQPZuunN6liY,20885
6
+ RBComb/Helper/BoardUnits.py,sha256=8v_Kgh8wBNECLGn0Adiq8I2yxn_lDDVB8SatCQTqlCA,1486
7
+ RBComb/Helper/FunctionInterpolator.py,sha256=TA1MdWKJUgjhyFDQHnHVLaJngY51pj346cN7fHPAGbA,2423
8
+ RBComb/Helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ rbcomb-0.2.0.dist-info/METADATA,sha256=Y6cIjvE4J818CENsfDLFRsNYCUva1_e0CMNhWiOVSyc,499
10
+ rbcomb-0.2.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
11
+ rbcomb-0.2.0.dist-info/top_level.txt,sha256=r-FUOFpE0giise9-SRQl0-70z8gtAl1gROIXgtD0RmQ,7
12
+ rbcomb-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (78.1.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ RBComb