bool TCPIP_ZCLL_IsEnabled(TCPIP_NET_HANDLE hNet) { TCPIP_NET_IF* pNetIf = _TCPIPStackHandleToNetUp(hNet); if(pNetIf) { return pNetIf->Flags.bIsZcllEnabled != 0; } return false; }
bool TCPIP_ZCLL_Disable(TCPIP_NET_HANDLE hNet) { TCPIP_NET_IF* pNetIf = _TCPIPStackHandleToNetUp(hNet); if(pNetIf) { if(pNetIf->Flags.bIsZcllEnabled != 0) { _ZCLLDisable(pNetIf); TCPIP_STACK_AddressServiceEvent(pNetIf, TCPIP_STACK_ADDRESS_SERVICE_ZCLL, TCPIP_STACK_ADDRESS_SERVICE_EVENT_USER_STOP); } return true; } return false; }
bool TCPIP_ZCLL_Enable(TCPIP_NET_HANDLE hNet) { TCPIP_NET_IF* pNetIf = _TCPIPStackHandleToNetUp(hNet); if(pNetIf == 0) { return false; } if(pNetIf->Flags.bIsZcllEnabled != 0) { // already started return true; } if(TCPIP_STACK_AddressServiceCanStart(pNetIf, TCPIP_STACK_ADDRESS_SERVICE_ZCLL)) { return _ZCLLEnable(pNetIf); } return false; }
static int _Command_IPAddressSet(_CMDIO_DEV_NODE* pCmdIO, int argc, char** argv) { TCPIP_NET_HANDLE netH; TCPIP_NET_IF* pNetIf; IP_ADDRESS_TYPE addType; #if defined(TCPIP_STACK_USE_IPV4) IPV4_ADDR ipAddr, ipMask; IPV4_ADDR* pMask; #endif // defined(TCPIP_STACK_USE_IPV4) #if defined(TCPIP_STACK_USE_IPV6) IPV6_ADDR ipv6Addr; int prefixLen; #endif // defined(TCPIP_STACK_USE_IPV6) const void* cmdIoParam = pCmdIO->cmdIoParam; bool success = false; if (argc < 3) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Usage: setip <interface> <ipv4/6 address> <ipv4mask/ipv6 prefix len>\r\n"); (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Ex: setip PIC32INT 192.168.0.8 255.255.255.0 \r\n"); return false; } netH = TCPIP_STACK_NetHandleGet(argv[1]); if (netH == 0) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Unknown interface specified \r\n"); return false; } pNetIf = _TCPIPStackHandleToNetUp(netH); if(pNetIf == 0) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "No such interface is up\r\n"); return false; } addType = IP_ADDRESS_TYPE_ANY; #if defined(TCPIP_STACK_USE_IPV4) if (TCPIP_Helper_StringToIPAddress(argv[2], &ipAddr)) { addType = IP_ADDRESS_TYPE_IPV4; } #endif // defined(TCPIP_STACK_USE_IPV4) #if defined(TCPIP_STACK_USE_IPV6) if(TCPIP_Helper_StringToIPv6Address (argv[2], &ipv6Addr)) { addType = IP_ADDRESS_TYPE_IPV6; } #endif // defined(TCPIP_STACK_USE_IPV6) if(addType == IP_ADDRESS_TYPE_ANY) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Invalid IP address string \r\n"); return false; } #if defined(TCPIP_STACK_USE_IPV4) if(addType == IP_ADDRESS_TYPE_IPV4) { if(_TCPIPStackAddressServiceIsRunning(pNetIf) != TCPIP_STACK_ADDRESS_SERVICE_NONE) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "An address service is already running. Stop DHCP, ZCLL, etc. first\r\n"); return false; } if(argc > 3) { // we have net mask too if (!TCPIP_Helper_StringToIPAddress(argv[3], &ipMask)) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Invalid IP mask string \r\n"); return false; } pMask = &ipMask; } else { pMask = 0; } if(TCPIP_STACK_NetAddressSet(netH, &ipAddr, pMask, true)) { success = true; } } #endif // defined(TCPIP_STACK_USE_IPV4) #if defined(TCPIP_STACK_USE_IPV6) if(addType == IP_ADDRESS_TYPE_IPV6) { if(argc > 3) { // we have prefix length prefixLen = atoi(argv[3]); } else { prefixLen = 0; } if(TCPIP_IPV6_UnicastAddressAdd (netH, &ipv6Addr, prefixLen, false) != 0) { success = true; } } #endif // defined(TCPIP_STACK_USE_IPV6) (*pCmdIO->pCmdApi->msg)(cmdIoParam, success ? "Set ip address OK\r\n" : "Set ip address failed\r\n"); return false; }