FireSync API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kHxNode.h
Go to the documentation of this file.
1 
8 #ifndef K_FIRESYNC_HX_NODE_H
9 #define K_FIRESYNC_HX_NODE_H
10 
11 #include <kFireSync/kNodeDef.h>
12 
13 #include <kApi/Data/kString.h>
14 #include <kApi/Threads/kTimer.h>
15 #include <kApi/Utils/kDateTime.h>
16 
19 
20 #include <kFireSync/Hardware/kHxNode.x.h>
21 
28 typedef kStatus (kCall* kHxNodeMainFx)();
29 
49 //typedef kObject kHxNode; --forward-declared in kFsDef.x.h
50 
67 kFsFx(kStatus) kHxNode_ConstructPlatformInstance(k32s argc, const kChar** argv);
68 
84 {
85  return kStaticOf(kHxNode)->platformInstance;
86 }
87 
99 {
100  *node = kHxNode_PlatformInstance();
101 
102  return kIsNull(*node) ? kERROR_NOT_FOUND : kOK;
103 }
104 
114 {
115  return xkHxNode_VTable(node)->VLoadApp(node, library);
116 }
117 
126 {
127  kObj(kHxNode, node);
128 
129  return obj->hasStorage;
130 }
131 
140 {
141  kObj(kHxNode, node);
142 
143  return obj->netInterfaceCount;
144 }
145 
154 {
155  kObj(kHxNode, node);
156 
157  return kString_Chars(obj->storagePath);
158 }
159 
169 {
170  return xkHxNode_VTable(node)->VSetMessageAlloc(node, allocator);
171 }
172 
182 kFsFx(kStatus) kHxNode_SetDataHandler(kHxNode node, kCallbackFx function, kPointer receiver);
183 
197 kFsFx(kStatus) kHxNode_AddHealthUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver);
198 
208 kFsFx(kStatus) kHxNode_RemoveHealthUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver);
209 
228 kFsFx(kStatus) kHxNode_AddEnvironUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver);
229 
239 kFsFx(kStatus) kHxNode_RemoveEnvironUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver);
240 
252 kFsFx(kStatus) kHxNode_StartHealth(kHxNode node, kHealth health, kAlloc alloc);
253 
263 kFsFx(kStatus) kHxNode_StopHealth(kHxNode node);
264 
274 kFsFx(kStatus) kHxNode_SetLedMode(kHxNode node, kLed instance, kLedMode mode);
275 
288 {
289  kObj(kHxNode, node);
290 
291  return obj->minHealthLogPeriod;
292 }
293 
311 {
312  kObj(kHxNode, node);
313 
314  *priorityClass = obj->healthLogPriorityClass;
315  *priorityOffset = obj->healthLogPriorityOffset;
316 
317  return kOK;
318 }
319 
328 {
329  return xkHxNode_VTable(node)->VHealth(node);
330 }
331 
348 {
349  kObj(kHxNode, node);
350 
351  obj->restartRequested = kTRUE;
352 }
353 
364 {
365  kObj(kHxNode, node);
366 
367  return obj->restartRequested;
368 }
369 
381 {
382  kObj(kHxNode, node);
383 
384  kHealthProbe_SetValue(obj->leakProbe, (k64s)amount);
385 }
386 
395 {
396  kObj(kHxNode, node);
397 
398  kHealthProbe_AddValue(obj->leakProbe, (k64s)amount);
399 }
400 
408 {
409  kObj(kHxNode, node);
410 
411  return (kSize) kHealthProbe_Value(obj->leakProbe);
412 }
413 
422 {
423  kObj(kHxNode, node);
424 
425  return obj->hasWatchdog;
426 }
427 
447 {
448  return xkHxNode_VTable(node)->VEnableWatchdog(node, enable, timeoutPeriod);
449 }
450 
466 {
467  return xkHxNode_VTable(node)->VUpdateWatchdog(node, reason);
468 }
469 
481 {
482  return xkHxNode_VTable(node)->VClear(node);
483 }
484 
493 {
494  return xkHxNode_VTable(node)->VStart(node);
495 }
496 
507 kInlineFx(kStatus) kHxNode_Engage(kHxNode node, k64u startTime, k64s startEncoder, kBool maintainPhase)
508 {
509  return xkHxNode_VTable(node)->VEngage(node, startTime, startEncoder, maintainPhase);
510 }
511 
522 {
523  return xkHxNode_VTable(node)->VDisengage(node);
524 }
525 
534 {
535  return xkHxNode_VTable(node)->VStop(node);
536 }
537 
550 {
551  return xkHxNode_VTable(node)->VClearStats(node);
552 }
553 
565 {
566  kObj(kHxNode, node);
567 
568  return xkHxNode_VTable(node)->VWaitForRecoveryEvent(node, timeout);
569 }
570 
579 {
580  kObj(kHxNode, node);
581 
582  return obj->id;
583 }
584 
593 {
594  kObj(kHxNode, node);
595 
596  return obj->nodeType;
597 }
598 
607 {
608  kObj(kHxNode, node);
609 
610  return obj->nextId;
611 }
612 
627 {
628  return xkHxNode_VTable(node)->VSetNextId(node, id);
629 }
630 
639 {
640  kObj(kHxNode, node);
641 
642  return obj->mainProbe;
643 }
644 
654 {
655  kObj(kHxNode, node);
656 
657  obj->mainProbe = probeId;
658 
659  return kOK;
660 }
661 
676 {
677  kObj(kHxNode, node);
678 
679  *config = obj->ipConfig[index];
680 
681  return kOK;
682 }
683 
694 {
695  kObj(kHxNode, node);
696 
697  *config = obj->nextIpConfig[index];
698 
699  return kOK;
700 }
701 
717 {
718  return xkHxNode_VTable(node)->VSetNextIpConfig(node, index, config);
719 }
720 
733 {
734  return xkHxNode_VTable(node)->VWaitForNetworkOnline(node);
735 }
736 
753 {
754  return xkHxNode_VTable(node)->VDynamicIpConfig(node, index, config);
755 }
756 
769 {
770  kObj(kHxNode, node);
771 
772  *address = obj->macAddress[index];
773 
774  return kOK;
775 }
776 
790 kInlineFx(kStatus) kHxNode_SetBootConfig(kHxNode node, const kBootConfig* config)
791 {
792  return xkHxNode_VTable(node)->VSetBootConfig(node, config);
793 }
794 
803 {
804  kObj(kHxNode, node);
805 
806  return obj->powerSaverTimeout;
807 }
808 
818 {
819  kObj(kHxNode, node);
820 
821  obj->powerSaverTimeout = timeout;
822 
823  return kOK;
824 }
825 
834 {
835  kObj(kHxNode, node);
836 
837  return obj->powerSaverThreshold;
838 }
839 
849 {
850  kObj(kHxNode, node);
851 
852  obj->powerSaverThreshold = threshold;
853 
854  return kOK;
855 }
856 
865 {
866  kObj(kHxNode, node);
867 
868  return obj->lightDriverHighPowerEnabled;
869 }
870 
880 {
881  kObj(kHxNode, node);
882 
883  obj->lightDriverHighPowerEnabled = enabled;
884 
885  return xkHxNode_VTable(node)->VEnableLightDriverHighPower(node, enabled);
886 }
887 
896 kInlineFx(kStatus) kHxNode_BootConfig(kHxNode node, kBootConfig* config)
897 {
898  kObj(kHxNode, node);
899 
900  *config = obj->bootConfig;
901 
902  return kOK;
903 }
904 
914 {
915  kObj(kHxNode, node);
916 
917  return obj->networkSpeed[index];
918 }
919 
929 {
930  kObj(kHxNode, node);
931 
932  return obj->nextNetworkSpeed[index];
933 }
934 
950 {
951  return xkHxNode_VTable(node)->VSetNextNetworkSpeed(node, index, speed);
952 }
953 
963 {
964  kObj(kHxNode, node);
965 
966  return obj->networkSpeedCapabilities[index];
967 }
968 
978 {
979  kObj(kHxNode, node);
980 
981  return obj->defaultNetworkSpeed[index];
982 }
983 
994 {
995  return xkHxNode_VTable(node)->VSetNetworkTransmitRate(node, index, rate);
996 }
997 
1007 {
1008  return xkHxNode_VTable(node)->VNetworkTransmitRate(node, index);
1009 }
1010 
1020 {
1021  kObj(kHxNode, node);
1022 
1023  return obj->networkTransmitRateSupported[index];
1024 }
1025 
1037 {
1038  return xkHxNode_VTable(node)->VCommitConfig(node);
1039 }
1040 
1050 {
1051  return xkHxNode_VTable(node)->VClearFirmware(node, type);
1052 }
1053 
1068 kInlineFx(kStatus) kHxNode_WriteFirmware(kHxNode node, kNodeFirmwareType type, kStream stream, kSize size, kCallbackFx progress, kPointer context)
1069 {
1070  return xkHxNode_VTable(node)->VWriteFirmware(node, type, stream, size, progress, context);
1071 }
1072 
1086 {
1087  return xkHxNode_VTable(node)->VReloadFirmware(node, type, stream, size);
1088 }
1089 
1098 kFsFx(kStatus) kHxNode_Info(kHxNode node, kNodeInfo* info);
1099 
1107 kInlineFx(kBool) kHxNode_IsRescue(kHxNode node)
1108 {
1109  kObj(kHxNode, node);
1110 
1111  return (obj->bootMode == kBOOT_MODE_RESCUE) || (obj->bootMode == kBOOT_MODE_FALLBACK);
1112 }
1113 
1122 {
1123  kObj(kHxNode, node);
1124 
1125  return (obj->controllerType == kCONTROLLER_TYPE_VIRTUAL);
1126 }
1127 
1136 {
1137  kObj(kHxNode, node);
1138 
1139  return obj->cpuCount;
1140 }
1141 
1152 kInlineFx(kStatus) kHxNode_LogEx(kHxNode node, kLogOption options, const kChar* source, const kChar* message)
1153 {
1154  return xkHxNode_VTable(node)->VLogEx(node, options, source, message);
1155 }
1156 
1166 {
1167  return kHxNode_LogEx(node, 0, "", message);
1168 }
1169 
1178 kFsFx(kStatus) kHxNode_ReadLogItems(kHxNode node, kArrayList logItems);
1179 
1188 kFsFx(kStatus) kHxNode_GetLogItems(kHxNode node, kArrayList logItems);
1189 
1199 kInlineFx(kStatus) kHxNode_GetCrashLog(kHxNode node, kString* crashLog, kAlloc allocator)
1200 {
1201  return xkHxNode_VTable(node)->VGetCrashLog(node, crashLog, allocator);
1202 }
1203 
1212 {
1213  return xkHxNode_VTable(node)->VClearCrashLog(node);
1214 }
1215 
1226 {
1227  return xkHxNode_VTable(node)->VSetCrashLogAppInfo(node, version, nodeId);
1228 }
1229 
1241 {
1242  return xkHxNode_VTable(node)->VStats(node, stats);
1243 }
1244 
1255 {
1256  kObj(kHxNode, node);
1257 
1258  return xkHxNode_VTable(node)->VPlLoaded(node);
1259 }
1260 
1271 {
1272  kObj(kHxNode, node);
1273 
1274  return obj->mainPlVersion;
1275 }
1276 
1287 {
1288  kObj(kHxNode, node);
1289 
1290  return obj->mainPlConfig;
1291 }
1292 
1303 {
1304  kObj(kHxNode, node);
1305 
1306  return xkHxNode_VTable(node)->VPl2Loaded(node);
1307 }
1308 
1319 {
1320  kObj(kHxNode, node);
1321 
1322  return obj->secondaryPlVersion;
1323 }
1324 
1335 {
1336  kObj(kHxNode, node);
1337 
1338  return obj->secondaryPlConfig;
1339 }
1340 
1351 {
1352  kObj(kHxNode, node);
1353 
1354  return obj->daughterboardModel;
1355 }
1356 
1357 kInlineFx(kStatus) kHxNode_ReadMemory(kHxNode node, kNodeMemorySpace space, k64u offset, kSize length, void* data)
1358 {
1359  return xkHxNode_VTable(node)->VReadMemory(node, space, offset, length, data);
1360 }
1361 
1362 kInlineFx(kStatus) kHxNode_WriteMemory(kHxNode node, kNodeMemorySpace space, k64u offset, kSize length, const void* data)
1363 {
1364  return xkHxNode_VTable(node)->VWriteMemory(node, space, offset, length, data);
1365 }
1366 
1367 kInlineFx(kStatus) kHxNode_ReadRegisters(kHxNode node, kRegisterModule moduleType, kSize moduleIndex, kArrayList registers)
1368 {
1369  return xkHxNode_VTable(node)->VReadRegisters(node, moduleType, moduleIndex, registers);
1370 }
1371 
1372 kInlineFx(kStatus) kHxNode_ReadRegisterOverrides(kHxNode node, kRegisterModule moduleType, kArrayList registers)
1373 {
1374  return xkHxNode_VTable(node)->VReadRegisterOverrides(node, moduleType, registers);
1375 }
1376 
1377 kInlineFx(kStatus) kHxNode_WriteRegisterOverrides(kHxNode node, kRegisterModule moduleType, kArrayList registers)
1378 {
1379  return xkHxNode_VTable(node)->VWriteRegisterOverrides(node, moduleType, registers);
1380 }
1381 
1382 kInlineFx(kStatus) kHxNode_I2cRead(kHxNode node, k32u deviceId, k32u address, kByte* data, kSize size)
1383 {
1384  return xkHxNode_VTable(node)->VI2cRead(node, deviceId, address, data, size);
1385 }
1386 
1387 kInlineFx(kStatus) kHxNode_I2cWrite(kHxNode node, k32u deviceId, k32u address, const kByte* data, kSize size)
1388 {
1389  return xkHxNode_VTable(node)->VI2cWrite(node, deviceId, address, data, size);
1390 }
1391 
1392 kInlineFx(kStatus) kHxNode_BeginSpi(kHxNode node, kSpiDeviceType deviceType)
1393 {
1394  return xkHxNode_VTable(node)->VBeginSpi(node, deviceType);
1395 }
1396 
1397 kInlineFx(kStatus) kHxNode_EndSpi(kHxNode node)
1398 {
1399  return xkHxNode_VTable(node)->VEndSpi(node);
1400 }
1401 
1402 kInlineFx(kStatus) kHxNode_SpiRead(kHxNode node, kByte* opCode, kSize opSize, kByte* data, kSize dataSize)
1403 {
1404  return xkHxNode_VTable(node)->VSpiRead(node, opCode, opSize, data, dataSize);
1405 }
1406 
1407 kInlineFx(kStatus) kHxNode_SpiWrite(kHxNode node, kByte* opCode, kSize opSize, kByte* data, kSize dataSize)
1408 {
1409  return xkHxNode_VTable(node)->VSpiWrite(node, opCode, opSize, data, dataSize);
1410 }
1411 
1412 kInlineFx(kStatus) kHxNode_SetTempControl(kHxNode node, const kTempControlEx* temp)
1413 {
1414  return xkHxNode_VTable(node)->VSetTempControl(node, temp);
1415 }
1416 
1417 kInlineFx(kStatus) kHxNode_TempControl(kHxNode node, kTempControlEx* temp)
1418 {
1419  return xkHxNode_VTable(node)->VTempControl(node, temp);
1420 }
1421 
1422 kInlineFx(kSize) kHxNode_EventCount(kHxNode node)
1423 {
1424  kObj(kHxNode, node);
1425 
1426  return kArrayList_Count(obj->eventManagers);
1427 }
1428 
1429 kInlineFx(kHxEvent) kHxNode_EventAt(kHxNode node, kSize index)
1430 {
1431  kObj(kHxNode, node);
1432 
1433  return kArrayList_AsT(obj->eventManagers, index, kHxEvent);
1434 }
1435 
1436 kInlineFx(kSize) kHxNode_CameraCount(kHxNode node)
1437 {
1438  kObj(kHxNode, node);
1439 
1440  return kArrayList_Count(obj->cameras);
1441 }
1442 
1443 kInlineFx(kHxCamera) kHxNode_CameraAt(kHxNode node, kSize index)
1444 {
1445  kObj(kHxNode, node);
1446 
1447  return kArrayList_AsT(obj->cameras, index, kHxCamera);
1448 }
1449 
1450 kInlineFx(kSize) kHxNode_LightCount(kHxNode node)
1451 {
1452  kObj(kHxNode, node);
1453 
1454  return kArrayList_Count(obj->lights);
1455 }
1456 
1457 kInlineFx(kHxLight) kHxNode_LightAt(kHxNode node, kSize index)
1458 {
1459  kObj(kHxNode, node);
1460 
1461  return kArrayList_AsT(obj->lights, index, kHxLight);
1462 }
1463 
1464 kInlineFx(kSize) kHxNode_DigitalCount(kHxNode node)
1465 {
1466  kObj(kHxNode, node);
1467 
1468  return kArrayList_Count(obj->digitalOutputs);
1469 }
1470 
1471 kInlineFx(kHxDigitalOut) kHxNode_DigitalAt(kHxNode node, kSize index)
1472 {
1473  kObj(kHxNode, node);
1474 
1475  return kArrayList_AsT(obj->digitalOutputs, index, kHxDigitalOut);
1476 }
1477 
1478 kInlineFx(kSize) kHxNode_AnalogCount(kHxNode node)
1479 {
1480  kObj(kHxNode, node);
1481 
1482  return kArrayList_Count(obj->analogOutputs);
1483 }
1484 
1485 kInlineFx(kHxAnalogOut) kHxNode_AnalogAt(kHxNode node, kSize index)
1486 {
1487  kObj(kHxNode, node);
1488 
1489  return kArrayList_AsT(obj->analogOutputs, index, kHxAnalogOut);
1490 }
1491 
1492 kInlineFx(kSize) kHxNode_SerialCount(kHxNode node)
1493 {
1494  kObj(kHxNode, node);
1495 
1496  return kArrayList_Count(obj->serialOutputs);
1497 }
1498 
1499 kInlineFx(kHxSerialOut) kHxNode_SerialAt(kHxNode node, kSize index)
1500 {
1501  kObj(kHxNode, node);
1502 
1503  return kArrayList_AsT(obj->serialOutputs, index, kHxSerialOut);
1504 }
1505 
1506 kInlineFx(kSize) kHxNode_ProjectorCount(kHxNode node)
1507 {
1508  kObj(kHxNode, node);
1509 
1510  return kArrayList_Count(obj->projectors);
1511 }
1512 
1513 kInlineFx(kHxProjector) kHxNode_ProjectorAt(kHxNode node, kSize index)
1514 {
1515  kObj(kHxNode, node);
1516 
1517  return kArrayList_AsT(obj->projectors, index, kHxProjector);
1518 }
1519 
1520 kInlineFx(kSize) kHxNode_IoTestCount(kHxNode node)
1521 {
1522  kObj(kHxNode, node);
1523 
1524  return kArrayList_Count(obj->ioTests);
1525 }
1526 
1527 kInlineFx(kHxIoTest) kHxNode_IoTestAt(kHxNode node, kSize index)
1528 {
1529  kObj(kHxNode, node);
1530 
1531  return kArrayList_AsT(obj->ioTests, index, kHxIoTest);
1532 }
1533 
1534 kInlineFx(kHxEncoder) kHxNode_Encoder(kHxNode node)
1535 {
1536  kObj(kHxNode, node);
1537 
1538  return obj->encoder;
1539 }
1540 
1541 kInlineFx(kHxGpio) kHxNode_Gpio(kHxNode node)
1542 {
1543  kObj(kHxNode, node);
1544 
1545  return obj->gpio;
1546 }
1547 
1548 kInlineFx(kHxTestJig) kHxNode_TestJig(kHxNode node)
1549 {
1550  kObj(kHxNode, node);
1551 
1552  return obj->testJig;
1553 }
1554 
1555 kInlineFx(kStatus) kHxNode_EnableLed(kHxNode node, kLed instance, kBool enabled)
1556 {
1557  return xkHxNode_VTable(node)->VEnableLed(node, instance, enabled);
1558 }
1559 
1560 kInlineFx(kControllerType) kHxNode_ControllerType(kHxNode node)
1561 {
1562  kObj(kHxNode, node);
1563 
1564  return obj->controllerType;
1565 }
1566 
1567 kInlineFx(k64s) kHxNode_EncoderCounter(kHxNode node)
1568 {
1569  return xkHxNode_VTable(node)->VEncoderCounter(node);
1570 }
1571 
1572 kInlineFx(k64u) kHxNode_TimeCounter(kHxNode node)
1573 {
1574  return xkHxNode_VTable(node)->VTimeCounter(node);
1575 }
1576 
1577 kInlineFx(kSize) kHxNode_LocalDigitalInputCount(kHxNode node)
1578 {
1579  //currently hardcoded, based on PL documentation; should we read this from somewhere?
1580  return 2;
1581 }
1582 
1583 kInlineFx(kSize) kHxNode_NetworkDigitalInputCount(kHxNode node)
1584 {
1585  //currently hardcoded, based on PL documentation; should we read this from somewhere?
1586  return 4;
1587 }
1588 
1589 kInlineFx(kBool) kHxNode_HasPeltier(kHxNode node)
1590 {
1591  kObj(kHxNode, node);
1592 
1593  return obj->hasPeltier;
1594 }
1595 
1596 kInlineFx(kBool) kHxNode_HasExternalTempProbe(kHxNode node)
1597 {
1598  kObj(kHxNode, node);
1599 
1600  return obj->hasExternalTempProbe;
1601 }
1602 
1603 kInlineFx(kSize) kHxNode_FanCount(kHxNode node)
1604 {
1605  kObj(kHxNode, node);
1606 
1607  return obj->fanCount;
1608 }
1609 
1610 kInlineFx(k64u) kHxNode_CameraDataBandwidth(kHxNode node)
1611 {
1612  kObj(kHxNode, node);
1613 
1614  return obj->cameraDataBandwidth;
1615 }
1616 
1626 {
1627  return xkHxNode_VTable(node)->VSetSyncSource(node, source);
1628 }
1629 
1638 {
1639  kObj(kHxNode, node);
1640 
1641  return obj->syncSource;
1642 }
1643 
1644 kInlineFx(kStatus) kHxNode_SetEventHandler(kHxNode node, kCallbackFx function, kPointer receiver, kAlloc eventAlloc)
1645 {
1646  return xkHxNode_VTable(node)->VSetEventHandler(node, function, receiver, eventAlloc);
1647 }
1648 
1649 kInlineFx(kStatus) kHxNode_SetLightDriverControl(kHxNode node, k64u key, kSize index, kBool enabled)
1650 {
1651  return xkHxNode_VTable(node)->VSetLightDriverControl(node, key, index, enabled);
1652 }
1653 
1654 kInlineFx(kStatus) kHxNode_GetLightDriverControl(kHxNode node, k64u key, kSize index, kBool* enabled)
1655 {
1656  return xkHxNode_VTable(node)->VGetLightDriverControl(node, key, index, enabled);
1657 }
1658 
1659 kInlineFx(kStatus) kHxNode_SetLightDriverPower(kHxNode node, k64u key, kSize index, k32u power, kBool commit)
1660 {
1661  return xkHxNode_VTable(node)->VSetLightDriverPower(node, key, index, power, commit);
1662 }
1663 
1664 kInlineFx(kStatus) kHxNode_GetLightDriverPower(kHxNode node, k64u key, kSize index, k32u* power)
1665 {
1666  return xkHxNode_VTable(node)->VGetLightDriverPower(node, key, index, power);
1667 }
1668 
1669 kInlineFx(kStatus) kHxNode_SetLightDriverCurrentLimit(kHxNode node, k64u key, kSize index, k32u currentLimit, kBool commit)
1670 {
1671  return xkHxNode_VTable(node)->VSetLightDriverCurrentLimit(node, key, index, currentLimit, commit);
1672 }
1673 
1674 kInlineFx(kStatus) kHxNode_GetLightDriverCurrentLimit(kHxNode node, k64u key, kSize index, k32u* currentLimit)
1675 {
1676  return xkHxNode_VTable(node)->VGetLightDriverCurrentLimit(node, key, index, currentLimit);
1677 }
1678 
1679 kInlineFx(kStatus) kHxNode_GetLightDriverRemainingSlotCount(kHxNode node, k64u key, kSize index, kSize* remainingCount)
1680 {
1681  return xkHxNode_VTable(node)->VGetLightDriverRemainingSlotCount(node, key, index, remainingCount);
1682 }
1683 
1684 kInlineFx(kStatus) kHxNode_SetLightDriverInfo(kHxNode node, k64u key, kSize index, kLightModel model, kVersion revision, k32u deviceId)
1685 {
1686  return xkHxNode_VTable(node)->VSetLightDriverInfo(node, key, index, model, revision, deviceId);
1687 }
1688 
1689 kInlineFx(kStatus) kHxNode_GetLightDriverInfo(kHxNode node, k64u key, kSize index, kLightModel* model, kVersion* revision, k32u* deviceId)
1690 {
1691  return xkHxNode_VTable(node)->VGetLightDriverInfo(node, key, index, model, revision, deviceId);
1692 }
1693 
1694 kInlineFx(kStatus) kHxNode_SetLightDriverCalibration(kHxNode node, kSize index, k64u key, kDataTree ldCal, kBool commit)
1695 {
1696  return xkHxNode_VTable(node)->VSetLightDriverCalibration(node, index, key, ldCal, commit);
1697 }
1698 
1699 kInlineFx(kStatus) kHxNode_GetLightDriverCalibration(kHxNode node, kSize index, k64u key, kDataTree* ldCal, kAlloc alloc)
1700 {
1701  return xkHxNode_VTable(node)->VGetLightDriverCalibration(node, index, key, ldCal, alloc);
1702 }
1703 
1704 kInlineFx(kStatus) kHxNode_ReadLightDriverTemperature(kHxNode node, kSize index, k64u key, k32s* temperature)
1705 {
1706  return xkHxNode_VTable(node)->VReadLightDriverTemperature(node, index, key, temperature);
1707 }
1708 
1724 kFsFx(kStatus) kHxNode_SetDateTime(kHxNode node, kDateTime dateTime);
1725 
1739 kFsFx(kDateTime) kHxNode_DateTime(kHxNode node);
1740 
1753 {
1754  kObj(kHxNode, node);
1755 
1756  kAtomic32s_Increment(&obj->inputCounter);
1757 
1758  return kOK;
1759 }
1760 
1787 {
1788  kObj(kHxNode, node);
1789 
1790  return kAtomic32s_Get(&obj->inputCounter);
1791 }
1792 
1793 #endif
kStatus kHxNode_SetMainTempProbe(kHxNode node, kTempProbeId probeId)
Specifies whether the internal temperature is selected to present in message stamp.
Definition: kHxNode.h:653
kStatus kHxNode_ConstructPlatformInstance(k32s argc, const kChar **argv)
Constructs a hardware node object representing the underlying platform.
#define kBOOT_MODE_FALLBACK
Program is the boot loader, operating in fallback mode.
Definition: kNodeDef.h:2068
void kHxNode_RequestAppRestart(kHxNode node)
Requests that the application should be restarted after exiting.
Definition: kHxNode.h:347
kStatus kHxNode_HealthLogPriority(kHxNode node, kThreadPriorityClass *priorityClass, k32s *priorityOffset)
Returns the recommended thread priority for health logging.
Definition: kHxNode.h:310
kStatus kHxNode_ReadLogItems(kHxNode node, kArrayList logItems)
Destructively reads log messages from the log history queue.
kStatus kHxNode_StopHealth(kHxNode node)
Destroys health services related to the base node object.
kStatus kHxNode_Disengage(kHxNode node)
Begins termination of node acquisition and output activities.
Definition: kHxNode.h:521
kStatus kHxNode_ClearFirmware(kHxNode node, kNodeFirmwareType type)
Clear the firmware region specified.
Definition: kHxNode.h:1049
kStatus kHxNode_SetPowerSaverTimeout(kHxNode node, k64u timeout)
Sets the node's power saver timeout.
Definition: kHxNode.h:817
Numeric identifier for kStamp temperature source.
kStatus kHxNode_LogEx(kHxNode node, kLogOption options, const kChar *source, const kChar *message)
Adds an item to the log.
Definition: kHxNode.h:1152
kHxNode kHxNode_PlatformInstance()
Returns a reference to the hardware platform singleton, if it exists.
Definition: kHxNode.h:83
Represents indicator LED operational modes.
kStatus kHxNode_WaitForNetworkOnline(kHxNode node)
Waits for network startup complation.
Definition: kHxNode.h:732
kStatus kHxNode_Stats(kHxNode node, kNodeStats *stats)
Fills in the node statistics items that are known by the kHardware library.
Definition: kHxNode.h:1240
kStatus kHxNode_GetLogItems(kHxNode node, kArrayList logItems)
Gets all log messages in the log history queue.
Represents configuration parameter for a light temperature control algorithm.
Definition: kNodeDef.h:1023
kBool kHxNode_NetworkTransmitRateSupported(kHxNode node, kSize index)
Reports whether the TransmitRate setting is supported by this device.
Definition: kHxNode.h:1019
kVersion kHxNode_PlVersion(kHxNode node)
Reports the node's primary PL firmware version.
Definition: kHxNode.h:1270
Represents types of node firmware.
kSize kHxNode_NetInterfaceCount(kHxNode node)
Reports the number of network interfaces.
Definition: kHxNode.h:139
kStatus kHxNode_SetPowerSaverThreshold(kHxNode node, k64u threshold)
Sets the node's power saver threshold.
Definition: kHxNode.h:848
kStatus kHxNode_Clear(kHxNode node)
Resets most mode configuration to defaults.
Definition: kHxNode.h:480
Represents an enumeration of register modules.
#define kStaticOf(SYMBOL)
kStatus kHxNode_SetSyncSource(kHxNode node, kSyncSource source)
Sets the node's preferred synchronization source.
Definition: kHxNode.h:1625
kStatus kHxNode_ClearStats(kHxNode node)
Clears cumulative run-time counters.
Definition: kHxNode.h:549
Represents FireSync synchronization sources.
#define kIsNull(POINTER)
kStatus kHxNode_WaitForRecoveryEvent(kHxNode node, k64u timeout)
Reports whether the node has an error condition requiring it to be stopped and started again...
Definition: kHxNode.h:564
Represents a tree of data objects.
k64u kHxNode_MinHealthLogPeriod(kHxNode node)
Returns the recommended minimum health logging period.
Definition: kHxNode.h:287
kStatus kHxNode_CommitConfig(kHxNode node)
Commits changes to device configuration.
Definition: kHxNode.h:1036
kStatus kHxNode_SetMessageAlloc(kHxNode node, kAlloc allocator)
Sets the memory allocator used to generate camera messages.
Definition: kHxNode.h:168
kDateTime kHxNode_DateTime(kHxNode node)
Gets the current calendar date/time for the node.
kNetworkSpeed kHxNode_DefaultNetworkSpeed(kHxNode node, kSize index)
Gets the default network speed settings for this device.
Definition: kHxNode.h:977
kStatus kHxNode_BootConfig(kHxNode node, kBootConfig *config)
Gets the node's boot configuration parameters.
Definition: kHxNode.h:896
Represents types of nodes.
kDaughterboardModel kHxNode_DaughterboardModel(kHxNode node)
Reports the node's daughterboard model.
Definition: kHxNode.h:1350
kStatus kHxNode_RemoveEnvironUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver)
Unregisters a callback function that was previously registered using kHxNode_AddEnvironUpdateHandler...
kTempProbeId kHxNode_MainTempProbe(kHxNode node)
Gets a value indicating the stamp temperature source.
Definition: kHxNode.h:638
Represents detailed information about node hardware/firmware.
Definition: kNodeDef.h:2219
#define kInlineFx(TYPE)
k64u kHxNode_PowerSaverThreshold(kHxNode node)
Gets the node's power saver threshold.
Definition: kHxNode.h:833
kStatus kHxNode_IpConfig(kHxNode node, kSize index, kIpConfig *config)
Gets the IP configuration with which the device booted.
Definition: kHxNode.h:675
kStatus kHxNode_Stop(kHxNode node)
Ends node acquisition and output activities.
Definition: kHxNode.h:533
const kChar * kHxNode_StoragePath(kHxNode node)
Provides the root storage path for this node (if storage is supported).
Definition: kHxNode.h:153
kStatus kHxNode_MacAddress(kHxNode node, kSize index, kMacAddress *address)
Gets the node's Ethernet MAC address.
Definition: kHxNode.h:768
Represents address configuration for an Internet Protocol adapter.
Definition: kFsDef.h:157
kStatus kHxNode_SetBootConfig(kHxNode node, const kBootConfig *config)
Sets boot configuration parameters.
Definition: kHxNode.h:790
Represents an addressable memory space within a node.
kStatus kHxNode_AddHealthUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver)
Registers a callback function for periodic health updates.
kStatus kHxNode_ReloadFirmware(kHxNode node, kNodeFirmwareType type, kStream stream, kSize size)
Reloads firmware without affecting non-volatile records or rebooting.
Definition: kHxNode.h:1085
kStatus kHxNode_SetLedMode(kHxNode node, kLed instance, kLedMode mode)
Sets the given LED to the given operational state.
k32u kHxNode_PlConfig(kHxNode node)
Reports the node's primary PL configuration id.
Definition: kHxNode.h:1286
kStatus kHxNode_GetCrashLog(kHxNode node, kString *crashLog, kAlloc allocator)
Gets all log messages in the log history records.
Definition: kHxNode.h:1199
Essential declarations related to FireSync nodes.
k32u kHxNode_NetworkTransmitRate(kHxNode node, kSize index)
Reports the maximum Ethernet transmission rate.
Definition: kHxNode.h:1006
k64u kHxNode_PowerSaverTimeout(kHxNode node)
Gets the node's power saver timeout.
Definition: kHxNode.h:802
kStatus kHxNode_EnableWatchdog(kHxNode node, kBool enable, k64u timeoutPeriod)
Enables or disables the watchdog timer.
Definition: kHxNode.h:446
#define kTRUE
kStatus kHxNode_UpdateWatchdog(kHxNode node, kRestartReason reason)
Updates the watchdog status, optionally resetting the watchdog countdown timer.
Definition: kHxNode.h:465
kNodeType kHxNode_NodeType(kHxNode node)
Gets the type of node.
Definition: kHxNode.h:592
Abstract base class for hardware node classes.
kStatus kHxNode_Engage(kHxNode node, k64u startTime, k64s startEncoder, kBool maintainPhase)
Begin node acquisition and output activities.
Definition: kHxNode.h:507
kStatus kHxNode_SetNextId(kHxNode node, k32u id)
Sets the node's future device identifier (after reboot).
Definition: kHxNode.h:626
Base class for a health statistics collection service.
kStatus kHxNode_SetDateTime(kHxNode node, kDateTime dateTime)
Set the current calendar date/time for the node.
kBool kHxNode_HasStorage(kHxNode node)
Reports whether this node provides storage support.
Definition: kHxNode.h:125
kStatus kHxNode_DynamicIpConfig(kHxNode node, kSize index, kIpConfig *config)
Retrieve IP configuration by querying the stack.
Definition: kHxNode.h:752
#define kObj(TypeName_T, T_object)
kBool kHxNode_LightDriverHighPowerEnabled(kHxNode node)
Reports whether use of higher-powered light-driver set points is enabled.
Definition: kHxNode.h:864
kStatus kHxNode_SetDataHandler(kHxNode node, kCallbackFx function, kPointer receiver)
Sets the callback for camera data messages.
kStatus kHxNode_RemoveHealthUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver)
Unregisters a callback function that was previously registered using kHxNode_AddHealthUpdateHandler.
kStatus kHxNode_FindPlatformInstance(kHxNode *node)
Locates a hardware node object representing the underlying platform.
Definition: kHxNode.h:98
kStatus kHxNode_Log(kHxNode node, const kChar *message)
Adds an item to the log.
Definition: kHxNode.h:1165
Represents types of node controllers.
#define kBOOT_MODE_RESCUE
Program was loaded by bootloader under rescue conditions.
Definition: kNodeDef.h:2065
kSyncSource kHxNode_SyncSource(kHxNode node)
Gets the node's preferred synchronization source.
Definition: kHxNode.h:1637
kStatus kHxNode_InputCounter(kHxNode node)
Reports the current input counter value.
Definition: kHxNode.h:1786
kStatus kHealthProbe_SetValue(kHealthProbe probe, k64s value)
Sets the current value of a health probe.
Definition: kHealthProbe.h:125
kBool kHxNode_PlLoaded(kHxNode node)
Reports whether the node's primary PL has been successfully programmed.
Definition: kHxNode.h:1254
kStatus kHxNode_EnableLightDriverHighPower(kHxNode node, kBool enabled)
Enables use of higher-powered light-driver set points.
Definition: kHxNode.h:879
kStatus(kCall * kHxNodeMainFx)()
Dynamic entry point to user application.
Definition: kHxNode.h:28
kNetworkSpeed kHxNode_NetworkSpeed(kHxNode node, kSize index)
Gets current network speed.
Definition: kHxNode.h:913
#define kArrayList_AsT(kArrayList_list, kSize_index, T)
Represents model of daughterboard.
kBool kHxNode_IsVirtual(kHxNode node)
Reports whether this node is a virtual (simulated) node.
Definition: kHxNode.h:1121
void kHxNode_AddLeakedMemory(kHxNode node, kSize amount)
Adds to the total reported amount of memory leaked by this node.
Definition: kHxNode.h:394
Represents the reason that a device was rebooted.
kStatus kHxNode_SetNextIpConfig(kHxNode node, kSize index, const kIpConfig *config)
Sets the node's future IP configuration (after reboot).
Definition: kHxNode.h:716
kBool kHxNode_Pl2Loaded(kHxNode node)
Reports whether the node's secondary PL has been successfully programmed.
Definition: kHxNode.h:1302
kStatus kHxNode_LoadApp(kHxNode node, kDynamicLib *library)
Uses platform-specific methodology to load the library containing the application.
Definition: kHxNode.h:113
kSize kHxNode_LeakedMemory(kHxNode node)
Reports the total amount of leaked memory.
Definition: kHxNode.h:407
kNetworkSpeed kHxNode_NetworkSpeedCapabilities(kHxNode node, kSize index)
Gets the network speed settings supported by this device.
Definition: kHxNode.h:962
kBool kHxNode_HasWatchdog(kHxNode node)
Reports whether watchdog services are available on this platform.
Definition: kHxNode.h:421
kStatus kHxNode_NextIpConfig(kHxNode node, kSize index, kIpConfig *config)
Gets the node's future IP configuration (after reboot).
Definition: kHxNode.h:693
Declares the kHealth class and related types.
kNetworkSpeed kHxNode_NextNetworkSpeed(kHxNode node, kSize index)
Gets network speed that should take effect on next reboot.
Definition: kHxNode.h:928
k32u kHxNode_NextId(kHxNode node)
Gets the node's future device identifier (after reboot).
Definition: kHxNode.h:606
#define kOK
kStatus kHxNode_Info(kHxNode node, kNodeInfo *info)
Fills in the given node info structure with any known information about this node.
#define kCONTROLLER_TYPE_VIRTUAL
Host-based virtual device.
Definition: kNodeDef.h:1888
k64s kHealthProbe_Value(kHealthProbe probe)
Reports the current value of the health probe.
Definition: kHealthProbe.h:192
kStatus kHealthProbe_AddValue(kHealthProbe probe, k64s value)
Adds an amount to the current value of a health probe.
Definition: kHealthProbe.h:138
kStatus kHxNode_StartHealth(kHxNode node, kHealth health, kAlloc alloc)
Starts health services related to the base node object.
kStatus kHxNode_AddEnvironUpdateHandler(kHxNode node, kCallbackFx function, kPointer receiver)
Registers a callback function for periodic environment updates.
kStatus kHxNode_Start(kHxNode node)
Prepare for node acquisition and output activities.
Definition: kHxNode.h:492
Represents supported light device types.
kStatus kHxNode_SetNetworkTransmitRate(kHxNode node, kSize index, k32u rate)
Sets the maximum Ethernet transmission rate.
Definition: kHxNode.h:993
kBool kHxNode_GetRestartRequest(kHxNode node)
Gets the current state of the application restart flag.
Definition: kHxNode.h:363
kVersion kHxNode_Pl2Version(kHxNode node)
Reports the node's secondary PL firmware version.
Definition: kHxNode.h:1318
kHealth kHxNode_Health(kHxNode node)
Returns health service associated with this node.
Definition: kHxNode.h:327
kStatus kHxNode_IncrementInputCounter(kHxNode node)
Increments the node input counter.
Definition: kHxNode.h:1752
#define kERROR_NOT_FOUND
Represents node run-time statistics.
Definition: kNodeDef.h:2256
kStatus kHxNode_SetNextNetworkSpeed(kHxNode node, kSize index, kNetworkSpeed speed)
Sets network speed that should take effect on next reboot.
Definition: kHxNode.h:949
k32u kHxNode_Pl2Config(kHxNode node)
Reports the node's secondary PL configuration id.
Definition: kHxNode.h:1334
kStatus kHxNode_WriteFirmware(kHxNode node, kNodeFirmwareType type, kStream stream, kSize size, kCallbackFx progress, kPointer context)
Writes the firmware region specified.
Definition: kHxNode.h:1068
Declares the kHealthProbe class and related types.
void kHxNode_SetLeakedMemory(kHxNode node, kSize amount)
Sets the reported amount of memory that has been leaked on this node.
Definition: kHxNode.h:380
kStatus kHxNode_SetCrashLogAppInfo(kHxNode node, kVersion version, k32u nodeId)
Sets the appropriate fields in the crash log object.
Definition: kHxNode.h:1225
k32u kHxNode_Id(kHxNode node)
Gets the node's device identifier (serial number).
Definition: kHxNode.h:578
kSize kHxNode_ProcessorCount(kHxNode node)
Reports the number of available processor cores.
Definition: kHxNode.h:1135
Represents indicator LED types.
kStatus kHxNode_ClearCrashLog(kHxNode node)
Clears the crash log history records.
Definition: kHxNode.h:1211
Represents a network speed.