1 /**
2 * Helper functions
3 */
4 module dinodave.helper;
5 
6 import std.conv;
7 import std.exception;
8 
9 import dinodave.nodave;
10 
11 void put8(ubyte[] buffer, in int value) {
12    davePut8(buffer.ptr, value);
13 }
14 
15 void put16(ubyte[] buffer, in int value) {
16    davePut16(buffer.ptr, value);
17 }
18 
19 void put32(ubyte[] buffer, in int value) {
20    davePut32(buffer.ptr, value);
21 }
22 
23 void putFloat(ubyte[] buffer, in float value) {
24    davePutFloat(buffer.ptr, value);
25 }
26 
27 void put8At(ubyte[] buffer, in int pos, in int value) {
28    enforce(pos < buffer.length && pos >= 0);
29    davePut8At(buffer.ptr, pos, value);
30 }
31 
32 void put16At(ubyte[] buffer, int pos, in int value) {
33    enforce(pos < (buffer.length - 1) && pos >= 0);
34    davePut16At(buffer.ptr, pos, value);
35 }
36 
37 void put32At(ubyte[] buffer, in int pos, in int value) {
38    enforce(pos < (buffer.length - 3) && pos >= 0);
39    davePut32At(buffer.ptr, pos, value);
40 }
41 
42 void putFloatAt(ubyte[] buffer, in int pos, in float value) {
43    enforce(pos < (buffer.length - 3) && pos >= 0);
44    davePutFloatAt(buffer.ptr, pos, value);
45 }
46 
47 ubyte toBCD(ubyte i) {
48    return daveToBCD(i);
49 }
50 
51 ubyte fromBCD(ubyte i) {
52    return daveFromBCD(i);
53 }
54 
55 /**
56 * Get error code description
57 *
58 * Params:  code = error code
59 *
60 *
61 * Returns: description of error
62 * Generally, positive error codes represent errors reported by the PLC,
63 * while negative ones represent errors detected by LIBNODAVE, e.g. no response from the PLC.
64 */
65 string strerror(int code) {
66    return to!(string)(daveStrerror(code));
67 }