Home | History | Annotate | Line # | Download | only in ServiceRegistration
      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