1 /* cti-common.h 2 * 3 * Copyright (c) 2020 Apple Computer, Inc. All rights reserved. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 * This code adds border router support to 3rd party HomeKit Routers as part of Apples commitment to the CHIP project. 18 * 19 * Concise Thread Interface for Thread Border router control. 20 */ 21 22 #ifndef __CTI_COMMON_H__ 23 #define __CTI_COMMON_H__ 24 25 #if OPENTHREAD_PLATFORM_POSIX 26 #define NO_IOLOOP 1 27 #endif 28 29 typedef struct _cti_connection_t *cti_connection_t; 30 31 #ifndef GCCATTR 32 #ifdef __clang__ 33 #define GCCATTR(x) 34 #else 35 #define GCCATTR(x) __attribute__(x) 36 #endif 37 #endif 38 39 #ifndef NONNULL 40 #ifdef __clang__ 41 #define NONNULL _Nonnull 42 #else 43 #define NONNULL 44 #endif 45 #endif 46 47 #ifndef NULLABLE 48 #ifdef __clang__ 49 #define NULLABLE _Nullable 50 #else 51 #define NULLABLE 52 #endif 53 #endif 54 55 #ifndef UNUSED 56 #ifdef __clang__ 57 #define UNUSED __unused 58 #else 59 #define UNUSED __attribute__((unused)) 60 #endif 61 #endif 62 63 #ifndef ND6_INFINITE_LIFETIME 64 #define ND6_INFINITE_LIFETIME 0xffffffff 65 #endif 66 67 #define kCTIMessageType_Response 0 68 #define kCTIMessageType_AddService 1 69 #define kCTIMessageType_RemoveService 2 70 #define kCTIMessageType_AddPrefix 3 71 #define kCTIMessageType_RemovePrefix 4 72 #define kCTIMessageType_GetTunnelName 5 73 #define kCTIMessageType_TunnelNameResponse 6 74 #define kCTIMessageType_RequestStateEvents 7 75 #define kCTIMessageType_StateEvent 8 76 #define kCTIMessageType_RequestUInt64PropEvents 9 77 #define kCTIMessageType_UInt64PropEvent 10 78 #define kCTIMessageType_RequestRoleEvents 11 79 #define kCTIMessageType_RoleEvent 12 80 #define kCTIMessageType_RequestServiceEvents 13 81 #define kCTIMessageType_ServiceEvent 14 82 #define kCTIMessageType_RequestPrefixEvents 15 83 #define kCTIMessageType_PrefixEvent 16 84 85 #if defined(POSIX_BUILD) || OPENTHREAD_PLATFORM_POSIX 86 #define kCTIPropertyPartitionID 1 87 #define kCTIPropertyExtendedPANID 2 88 #else 89 #define kCTIPropertyPartitionID "Network:PartitionID" 90 #define kCTIPropertyExtendedPANID "Network:XPANID" 91 #endif // POSIX_BUILD 92 93 typedef enum 94 { 95 kCTIStatus_NoError = 0, 96 kCTIStatus_UnknownError = -65537, 97 kCTIStatus_NoMemory = -65539, // No Memory 98 kCTIStatus_BadParam = -65540, // Client passed invalid arg 99 kCTIStatus_Invalid = -65549, // Invalid CTI message 100 kCTIStatus_DaemonNotRunning = -65563, // Daemon not running: unable to connect 101 kCTIStatus_Disconnected = -65569, // Server disconnected after successful connection 102 kCTIStatus_NotPermitted = -65571 // Unable to open the daemon socket, or connection not permitted. 103 } cti_status_t; 104 105 // Enum values for kWPANTUNDStateXXX (see wpan-properties.h) 106 typedef enum { 107 kCTI_NCPState_Uninitialized, 108 kCTI_NCPState_Fault, 109 kCTI_NCPState_Upgrading, 110 kCTI_NCPState_DeepSleep, 111 kCTI_NCPState_Offline, 112 kCTI_NCPState_Commissioned, 113 kCTI_NCPState_Associating, 114 kCTI_NCPState_CredentialsNeeded, 115 kCTI_NCPState_Associated, 116 kCTI_NCPState_Isolated, 117 kCTI_NCPState_NetWake_Asleep, 118 kCTI_NCPState_NetWake_Waking, 119 kCTI_NCPState_Unknown 120 } cti_network_state_t; 121 122 typedef enum { 123 kCTI_NetworkNodeType_Unknown, 124 kCTI_NetworkNodeType_Router, 125 kCTI_NetworkNodeType_EndDevice, 126 kCTI_NetworkNodeType_SleepyEndDevice, 127 kCTI_NetworkNodeType_SynchronizedSleepyEndDevice, 128 kCTI_NetworkNodeType_NestLurker, 129 kCTI_NetworkNodeType_Commissioner, 130 kCTI_NetworkNodeType_Leader, 131 kCTI_NetworkNodeType_SleepyRouter, 132 } cti_network_node_type_t; 133 134 #define kCTIRoleDisabled 0 135 #define kCTIRoleDetached 1 136 #define kCTIRoleChild 2 137 #define kCTIRoleRouter 3 138 #define kCTIRoleLeader 4 139 140 // CTI flags. 141 #define kCTIFlag_Stable 1 142 #define kCTIFlag_NCP 2 143 144 #endif // _CTI_COMMON_H__ 145 146 // Local Variables: 147 // mode: C 148 // tab-width: 4 149 // c-file-style: "bsd" 150 // c-basic-offset: 4 151 // fill-column: 120 152 // indent-tabs-mode: nil 153 // End: 154