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 }