CVB++ 15.0
c_gen_api.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include "../namespace.hpp"
8
9#include "c_img.h"
10
11namespace Cvb
12{
13
14CVB_BEGIN_INLINE_NS
15
16namespace CExports
17{
18
19
20typedef void * NODEMAP;
21typedef void * NODE;
22typedef void* NODEMAPSTREAM;
23
24typedef void * NODECALLBACK;
25
26typedef void * FWUPDATER;
27
28
29typedef void(__stdcall * TFNode)(NODE Node, void * pPrivate);
30typedef cvbbool_t(__stdcall * TFNodeProc)(NODE Node, cvbres_t Reason, void * pPrivate);
31typedef cvbbool_t(__stdcall* TFDeviceReset)(unsigned int EstimatedUpdateDurationMs, unsigned int DiscoverDurationMs, NODEMAP& NodeMap, void* pPrivate);
32
33enum TAccessMode
34{
35 AM_NI = 0,
36 AM_NA,
37 AM_RO,
38 AM_WO,
39 AM_RW
40};
41
42enum TVisibility
43{
44 NV_Beginner = 0,
45 NV_Expert,
46 NV_Guru,
47 NV_Invisible = -1
48};
49
50enum TNumberRepresentation
51{
52 NR_Undefined = -1,
53 NR_Linear,
54 NR_Logarithmic,
55 NR_Boolean,
56 NR_PureNumber,
57 NR_HexNumber,
58 NR_IPv4,
59 NR_MAC
60};
61
62enum TCachingMode
63{
64 CM_NoCache = 0,
65 CM_WriteThrough,
66 CM_WriteAround
67};
68
69enum TNodeType
70{
71 NT_Invalid = -1,
72 NT_Unknown = 0,
73 NT_Boolean,
74 NT_Category,
75 NT_Command,
76 NT_Enumeration,
77 NT_EnumEntry,
78 NT_Float,
79 NT_Integer,
80 NT_String,
81 NT_Port,
82 NT_Node,
83 NT_Last
84};
85
86enum TNodeMapInfo
87{
88 NMI_Vendor = 0,
89 NMI_Model,
90 NMI_SchemaVersionMajor,
91 NMI_SchemaVersionMinor,
92 NMI_SchemaVersionSubMinor,
93 NMI_DeviceVersionMajor,
94 NMI_DeviceVersionMinor,
95 NMI_DeviceVersionSubMinor,
96 NMI_Namespace,
97 NMI_ProductGUID,
98 NMI_VersionGUID,
99 NMI_Tooltip,
100 NMI_Last
101};
102
103enum TNodeInfo
104{
105 NI_Name = 0,
106 NI_DisplayName,
107 NI_AccessMode,
108 NI_Max,
109 NI_Min,
110 NI_Increment,
111 NI_NumEnumEntries,
112 NI_Streamable,
113 NI_CachingMode,
114 NI_Tooltip,
115 NI_Description,
116 NI_Visibility,
117 NI_PollingTime,
118 NI_EventID,
119 NI_RegisterAddress,
120 NI_RegisterLength,
121 NI_Representation,
122 NI_Unit,
123 NI_AliasName,
124 NI_Deprecated,
125 NI_Feature,
126 NI_Last
127};
128
129enum TNodeList
130{
131 NL_ChildNode = 0,
132 NL_Selected,
133 NL_EnumEntry,
134 NL_Selecting,
135 NL_Last
136};
137
138enum TVerifyMode
139{
140 VM_NO = 0,
141 VM_WO,
142 VM_RO,
143 VM_RW,
144 VM_Last
145};
146
147enum TFirmwareUpdateInfo
148{
149 FWUI_Key = 0,
150 FWUI_Value,
151 FWUI_LanguageCode
152};
153
154enum TStreamType
155{
156 ST_JSON
157};
158
159IMPORT(cvbres_t) GetGenApiVersion(cvbval_t & VersionMajor,
160 cvbval_t & VersionMinor,
161 cvbval_t & VersionSubMinor);
162
163IMPORT(cvbbool_t) IsNodeMap(NODEMAP NodeMap);
164IMPORT(cvbres_t) NMNodeCount(NODEMAP NodeMap,
165 cvbdim_t & NodeCount);
166IMPORT(cvbres_t) NMListNode(NODEMAP NodeMap,
167 cvbdim_t Index,
168 char * NodeName,
169 size_t & NodeNameSize);
170IMPORT(cvbres_t) NMListNodeW(NODEMAP NodeMap,
171 cvbdim_t Index,
172 wchar_t * NodeName,
173 size_t & NodeNameSize);
174IMPORT(cvbres_t) NMGetNode(NODEMAP NodeMap,
175 const char * NodeName,
176 NODE & Node);
177IMPORT(cvbres_t) NMGetNodeW(NODEMAP NodeMap,
178 const wchar_t * NodeName,
179 NODE & Node);
180IMPORT(cvbres_t) NMInfoAsBoolean(NODEMAP NodeMap,
181 TNodeMapInfo Cmd,
182 cvbbool_t & Info);
183IMPORT(cvbres_t) NMInfoAsFloat(NODEMAP NodeMap,
184 TNodeMapInfo Cmd,
185 double & Info);
186IMPORT(cvbres_t) NMInfoAsInteger(NODEMAP NodeMap,
187 TNodeMapInfo Cmd,
188 cvbint64_t & Info);
189IMPORT(cvbres_t) NMInfoAsString(NODEMAP NodeMap,
190 TNodeMapInfo Cmd,
191 char * Info,
192 size_t & InfoSize);
193IMPORT(cvbres_t) NMInfoAsStringW(NODEMAP NodeMap,
194 TNodeMapInfo Cmd,
195 wchar_t * Info,
196 size_t & InfoSize);
197IMPORT(cvbres_t) NMLoadSet(NODEMAP NodeMap,
198 const char * Filename,
199 TFNodeProc Callback,
200 void * pPrivate);
201IMPORT(cvbres_t) NMLoadSetW(NODEMAP NodeMap,
202 const wchar_t * Filename,
203 TFNodeProc Callback,
204 void * pPrivate);
205IMPORT(cvbres_t) NMLoadSetEx(NODEMAP NodeMap,
206 const char * Filename,
207 cvbbool_t Validate,
208 TFNodeProc Callback,
209 void * pPrivate);
210IMPORT(cvbres_t) NMLoadSetExW(NODEMAP NodeMap,
211 const wchar_t * Filename,
212 cvbbool_t Validate,
213 TFNodeProc Callback,
214 void * pPrivate);
215IMPORT(cvbres_t) NMLoadSetString(NODEMAP NodeMap,
216 const char * Settings,
217 cvbbool_t Validate,
218 TFNodeProc Callback,
219 void * pPrivate);
220IMPORT(cvbres_t) NMLoadSetStringW(NODEMAP NodeMap,
221 const wchar_t * Settings,
222 cvbbool_t Validate,
223 TFNodeProc Callback,
224 void * pPrivate);
225IMPORT(cvbres_t) NMSaveSet(NODEMAP NodeMap,
226 const char * Filename,
227 TFNodeProc Callback,
228 void * pPrivate);
229IMPORT(cvbres_t) NMSaveSetW(NODEMAP NodeMap,
230 const wchar_t * Filename,
231 TFNodeProc Callback,
232 void * pPrivate);
233IMPORT(cvbres_t) NMSaveSetEx(NODEMAP NodeMap,
234 const char * Filename,
235 const char * NodeList,
236 TFNodeProc Callback,
237 void * pPrivate);
238IMPORT(cvbres_t) NMSaveSetExW(NODEMAP NodeMap,
239 const wchar_t * Filename,
240 const wchar_t * NodeList,
241 TFNodeProc Callback,
242 void * pPrivate);
243IMPORT(cvbres_t) NMSaveSetString(NODEMAP NodeMap,
244 char * Settings,
245 size_t & SettingsSize,
246 TFNodeProc Callback,
247 void * pPrivate);
248IMPORT(cvbres_t) NMSaveSetStringW(NODEMAP NodeMap,
249 wchar_t * Settings,
250 size_t & SettingsSize,
251 TFNodeProc Callback,
252 void * pPrivate);
253IMPORT(cvbres_t) NMSaveSetStringEx(NODEMAP NodeMap,
254 char * Settings,
255 size_t & SettingsSize,
256 const char * NodeList,
257 TFNodeProc Callback,
258 void * pPrivate);
259IMPORT(cvbres_t) NMSaveSetStringExW(NODEMAP NodeMap,
260 wchar_t * Settings,
261 size_t & SettingsSize,
262 const wchar_t * NodeList,
263 TFNodeProc Callback,
264 void * pPrivate);
265IMPORT(cvbres_t) NMDownloadFile(NODEMAP NodeMap,
266 const char * FileSelectorEntryName,
267 const char * Filename);
268IMPORT(cvbres_t) NMDownloadFileW(NODEMAP NodeMap,
269 const wchar_t * FileSelectorEntryName,
270 const wchar_t * Filename);
271IMPORT(cvbres_t) NMDownloadFileMemory(NODEMAP NodeMap,
272 const char * FileSelectorEntryName,
273 void * pBuffer,
274 size_t & BufferSize);
275IMPORT(cvbres_t) NMDownloadFileMemoryW(NODEMAP NodeMap,
276 const wchar_t * FileSelectorEntryName,
277 void * pBuffer,
278 size_t & BufferSize);
279IMPORT(cvbres_t) NMUploadFile(NODEMAP NodeMap,
280 const char * FileSelectorEntryName,
281 const char * Filename);
282IMPORT(cvbres_t) NMUploadFileW(NODEMAP NodeMap,
283 const wchar_t * FileSelectorEntryName,
284 const wchar_t * Filename);
285IMPORT(cvbres_t) NMUploadFileMemory(NODEMAP NodeMap,
286 const char * FileSelectorEntryName,
287 const void * pBuffer,
288 size_t BufferSize);
289IMPORT(cvbres_t) NMUploadFileMemoryW(NODEMAP NodeMap,
290 const wchar_t * FileSelectorEntryName,
291 const void * pBuffer,
292 size_t BufferSize);
293IMPORT(cvbres_t) NMPollNodes(NODEMAP NodeMap,
294 cvbval_t DeltaMS);
295IMPORT(cvbres_t) NMCreateStream(NODEMAP NodeMap,
296 TStreamType StreamType,
297 NODEMAPSTREAM& NodeMapStream);
298IMPORT(cvbres_t) NMStreamPush(NODEMAPSTREAM NodeMapStream,
299 NODE Node);
300IMPORT(cvbres_t) NMStreamDump(NODEMAPSTREAM NodeMapStream,
301 char* Settings,
302 size_t& SettingsSize);
303IMPORT(cvbres_t) NMStreamDumpW(NODEMAPSTREAM NodeMapStream,
304 wchar_t* Settings,
305 size_t& SettingsSize);
306
307inline cvbres_t NMStreamDumpTyped(NODEMAPSTREAM NodeMapStream, char* Settings, size_t& SettingsSize)
308{
309 return NMStreamDump(NodeMapStream, Settings, SettingsSize);
310}
311
312inline cvbres_t NMStreamDumpTyped(NODEMAPSTREAM NodeMapStream, wchar_t* Settings, size_t& SettingsSize)
313{
314 return NMStreamDumpW(NodeMapStream, Settings, SettingsSize);
315}
316
317
318IMPORT(cvbbool_t) IsNode(NODE Node);
319IMPORT(cvbres_t) NType(NODE Node,
320 TNodeType & Type);
321IMPORT(cvbres_t) NInvalidate(NODE Node);
322IMPORT(cvbres_t) NRegisterUpdate(NODE Node,
323 TFNode Callback,
324 void * pPrivate,
325 NODECALLBACK & Handle);
326IMPORT(cvbres_t) NDeregisterUpdate(NODE Node,
327 NODECALLBACK Handle);
328
329IMPORT(cvbres_t) NInfoAsBoolean(NODE Node,
330 TNodeInfo Cmd,
331 cvbbool_t & Info);
332IMPORT(cvbres_t) NInfoAsFloat(NODE Node,
333 TNodeInfo Cmd,
334 double & Info);
335IMPORT(cvbres_t) NInfoAsInteger(NODE Node,
336 TNodeInfo Cmd,
337 cvbint64_t & Info);
338IMPORT(cvbres_t) NInfoAsString(NODE Node,
339 TNodeInfo Cmd,
340 char * Info,
341 size_t & InfoSize);
342IMPORT(cvbres_t) NInfoAsStringW(NODE Node,
343 TNodeInfo Cmd,
344 wchar_t * Info,
345 size_t & InfoSize);
346IMPORT(cvbres_t) NInfoEnum(NODE Node,
347 cvbdim_t Index,
348 cvbint64_t & IntegerValue,
349 char * StringValue,
350 size_t & StringValueSize);
351IMPORT(cvbres_t) NInfoEnumW(NODE Node,
352 cvbdim_t Index,
353 cvbint64_t & IntegerValue,
354 wchar_t * StringValue,
355 size_t & StringValueSize);
356IMPORT(cvbres_t) NListCount(NODE Node,
357 TNodeList List,
358 cvbdim_t & NodeCount);
359IMPORT(cvbres_t) NList(NODE Node,
360 TNodeList List,
361 cvbdim_t Index,
362 char * Entry,
363 size_t & EntrySize);
364IMPORT(cvbres_t) NListW(NODE Node,
365 TNodeList List,
366 cvbdim_t Index,
367 wchar_t * Entry,
368 size_t & EntrySize);
369
370IMPORT(cvbres_t) NGetAsBoolean(NODE Node,
371 cvbbool_t & Value);
372IMPORT(cvbres_t) NGetAsFloat(NODE Node,
373 double & Value);
374IMPORT(cvbres_t) NGetAsInteger(NODE Node,
375 cvbint64_t & Value);
376IMPORT(cvbres_t) NGetAsString(NODE Node,
377 char * Value,
378 size_t & ValueSize);
379IMPORT(cvbres_t) NGetAsStringW(NODE Node,
380 wchar_t * Value,
381 size_t & ValueSize);
382IMPORT(cvbres_t) NGetAsMemory(NODE PortNode,
383 cvbint64_t Address,
384 void * pBuffer,
385 size_t BufferSize);
386IMPORT(cvbres_t) NSetAsBoolean(NODE Node,
387 cvbbool_t Value);
388IMPORT(cvbres_t) NSetAsFloat(NODE Node,
389 double Value);
390IMPORT(cvbres_t) NSetAsInteger(NODE Node,
391 cvbint64_t Value);
392IMPORT(cvbres_t) NSetAsString(NODE Node,
393 const char * Value);
394IMPORT(cvbres_t) NSetAsStringW(NODE Node,
395 const wchar_t * Value);
396IMPORT(cvbres_t) NSetAsMemory(NODE PortNode,
397 cvbint64_t Address,
398 const void * pBuffer,
399 size_t BufferSize);
400
401IMPORT(cvbres_t) NGetVerifyMode(NODE Node,
402 TVerifyMode & Mode);
403IMPORT(cvbres_t) NSetVerifyMode(NODE Node,
404 TVerifyMode Mode);
405
406CVB_DEF_CAPI(cvbres_t, CreateFirmwareUpdater, (const char * Filename, cvbbool_t Verify, FWUPDATER & Updater))
407CVB_DEF_CAPI(cvbres_t, CreateFirmwareUpdaterW, (const wchar_t * Filename, cvbbool_t Verify, FWUPDATER & Updater))
408CVB_DEF_CAPI(cvbres_t, FWUpdateFileCount, (FWUPDATER Updater, size_t& FileCount))
409CVB_DEF_CAPI(cvbres_t, FWUpdateFileInfoCount, (FWUPDATER Updater, size_t FileIndex, size_t& InfoCount))
410CVB_DEF_CAPI(cvbres_t, FWUpdateFileInfo, (FWUPDATER Updater, size_t FileIndex, size_t InfoIndex, TFirmwareUpdateInfo Cmd, char* Info, size_t& InfoSize));
411CVB_DEF_CAPI(cvbres_t, FWUpdateFileInfoW, (FWUPDATER Updater, size_t FileIndex, size_t InfoIndex, TFirmwareUpdateInfo Cmd, wchar_t* Info, size_t& InfoSize));
412CVB_DEF_CAPI(cvbres_t, FWUpdate, (FWUPDATER Updater, NODEMAP NodeMap, const size_t UpdateFileSelection, TFDeviceReset Callback, void *pPrivate));
413
414
415inline cvbres_t NMGetNodeTyped(NODEMAP NodeMap, const char * NodeName, NODE & Node)
416{
417 return NMGetNode(NodeMap, NodeName, Node);
418}
419
420inline cvbres_t NMGetNodeTyped(NODEMAP NodeMap, const wchar_t* NodeName, NODE & Node)
421{
422 return NMGetNodeW(NodeMap, NodeName, Node);
423}
424
425
426inline cvbres_t NGetAsStringTyped(NODE Node, char * Value, size_t & ValueSize)
427{
428 return NGetAsString(Node, Value, ValueSize);
429}
430
431inline cvbres_t NGetAsStringTyped(NODE Node, wchar_t * Value, size_t & ValueSize)
432{
433 return NGetAsStringW(Node, Value, ValueSize);
434}
435
436inline cvbres_t NSetAsStringTyped(NODE Node, const char * Value)
437{
438 return NSetAsString(Node, Value);
439}
440
441inline cvbres_t NSetAsStringTyped(NODE Node, const wchar_t * Value)
442{
443 return NSetAsStringW(Node, Value);
444}
445
446inline cvbres_t NInfoAsStringTyped(NODE Node, TNodeInfo Cmd, char * Info, size_t & InfoSize)
447{
448 return NInfoAsString(Node, Cmd, Info, InfoSize);
449}
450
451inline cvbres_t NInfoAsStringTyped(NODE Node, TNodeInfo Cmd, wchar_t * Info, size_t & InfoSize)
452{
453 return NInfoAsStringW(Node, Cmd, Info, InfoSize);
454}
455
456inline cvbres_t NMInfoAsStringTyped(NODEMAP NodeMap, TNodeMapInfo Cmd, char * Info, size_t & InfoSize)
457{
458 return NMInfoAsString(NodeMap, Cmd, Info, InfoSize);
459}
460
461inline cvbres_t NMInfoAsStringTyped(NODEMAP NodeMap, TNodeMapInfo Cmd, wchar_t * Info, size_t & InfoSize)
462{
463 return NMInfoAsStringW(NodeMap, Cmd, Info, InfoSize);
464}
465
466inline cvbres_t NMLoadSetTyped(NODEMAP NodeMap, const char * Filename, TFNodeProc Callback, void * pPrivate)
467{
468 return NMLoadSet(NodeMap, Filename, Callback, pPrivate);
469}
470
471inline cvbres_t NMLoadSetTyped(NODEMAP NodeMap, const wchar_t * Filename, TFNodeProc Callback, void * pPrivate)
472{
473 return NMLoadSetW(NodeMap, Filename, Callback, pPrivate);
474}
475
476inline cvbres_t NMSaveSetTyped(NODEMAP NodeMap, const char * Filename, TFNodeProc Callback, void * pPrivate)
477{
478 return NMSaveSet(NodeMap, Filename, Callback, pPrivate);
479}
480
481inline cvbres_t NMSaveSetTyped(NODEMAP NodeMap, const wchar_t * Filename, TFNodeProc Callback, void * pPrivate)
482{
483 return NMSaveSetW(NodeMap, Filename, Callback, pPrivate);
484}
485
486inline cvbres_t NMSaveSetExTyped(NODEMAP NodeMap, const char * Filename, const char * NodeList, TFNodeProc Callback, void * pPrivate)
487{
488 return NMSaveSetEx(NodeMap, Filename, NodeList, Callback, pPrivate);
489}
490
491inline cvbres_t NMSaveSetExTyped(NODEMAP NodeMap, const wchar_t * Filename, const wchar_t* NodeList, TFNodeProc Callback, void * pPrivate)
492{
493 return NMSaveSetExW(NodeMap, Filename, NodeList, Callback, pPrivate);
494}
495
496inline cvbres_t NListTyped(NODE Node, TNodeList List, cvbdim_t Index, char * Entry, size_t & EntrySize)
497{
498 return NList(Node, List, Index, Entry, EntrySize);
499}
500
501inline cvbres_t NListTyped(NODE Node, TNodeList List, cvbdim_t Index, wchar_t * Entry, size_t & EntrySize)
502{
503 return NListW(Node, List, Index, Entry, EntrySize);
504}
505
506inline cvbres_t NMDownloadFileTyped(NODEMAP NodeMap, const char * FileSelectorEntryName, const char * Filename)
507{
508 return NMDownloadFile(NodeMap, FileSelectorEntryName, Filename);
509}
510
511inline cvbres_t NMDownloadFileTyped(NODEMAP NodeMap, const wchar_t * FileSelectorEntryName, const wchar_t * Filename)
512{
513 return NMDownloadFileW(NodeMap, FileSelectorEntryName, Filename);
514}
515
516inline cvbres_t NMDownloadFileMemoryTyped(NODEMAP NodeMap, const char* FileSelectorEntryName, void* pBuffer, size_t &BufferSize)
517{
518 return NMDownloadFileMemory(NodeMap, FileSelectorEntryName, pBuffer, BufferSize);
519}
520
521inline cvbres_t NMDownloadFileMemoryTyped(NODEMAP NodeMap, const wchar_t* FileSelectorEntryName, void* pBuffer, size_t& BufferSize)
522{
523 return NMDownloadFileMemoryW(NodeMap, FileSelectorEntryName, pBuffer, BufferSize);
524}
525
526inline cvbres_t NMUploadFileTyped(NODEMAP NodeMap, const char * FileSelectorEntryName, const char * Filename)
527{
528 return NMUploadFile(NodeMap, FileSelectorEntryName, Filename);
529}
530
531inline cvbres_t NMUploadFileTyped(NODEMAP NodeMap, const wchar_t * FileSelectorEntryName, const wchar_t * Filename)
532{
533 return NMUploadFileW(NodeMap, FileSelectorEntryName, Filename);
534}
535
536inline cvbres_t CreateFirmwareUpdaterTyped(const char * Filename, cvbbool_t Verify, FWUPDATER & Updater)
537{
538 return CVB_CALL_CAPI(CreateFirmwareUpdater(Filename, Verify, Updater));
539}
540
541inline cvbres_t CreateFirmwareUpdaterTyped(const wchar_t * Filename, cvbbool_t Verify, FWUPDATER & Updater)
542{
543 return CVB_CALL_CAPI(CreateFirmwareUpdaterW(Filename, Verify, Updater));
544}
545
546inline cvbres_t FWUpdateFileInfoTyped(FWUPDATER Updater, size_t FileIndex, size_t InfoIndex, TFirmwareUpdateInfo Cmd, char* Info, size_t& InfoSize)
547{
548 return CVB_CALL_CAPI(FWUpdateFileInfo(Updater, FileIndex, InfoIndex, Cmd, Info, InfoSize));
549}
550
551inline cvbres_t FWUpdateFileInfoTyped(FWUPDATER Updater, size_t FileIndex, size_t InfoIndex, TFirmwareUpdateInfo Cmd, wchar_t* Info, size_t& InfoSize)
552{
553 return CVB_CALL_CAPI(FWUpdateFileInfoW(Updater, FileIndex, InfoIndex, Cmd, Info, InfoSize));
554}
555
556
557}
558
559CVB_END_INLINE_NS
560
561}
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17