use of com.zsmartsystems.zigbee.dongle.ember.internal.ezsp.transaction.EzspSingleResponseTransaction in project com.zsmartsystems.zigbee by zsmartsystems.
the class EmberNcp method getChildParameters.
/**
* Returns information about the children of the local node and the parent of the local node.
*
* @return the {@link EzspGetParentChildParametersResponse}
*/
public EzspGetParentChildParametersResponse getChildParameters() {
EzspGetParentChildParametersRequest request = new EzspGetParentChildParametersRequest();
EzspTransaction transaction = ashHandler.sendEzspTransaction(new EzspSingleResponseTransaction(request, EzspGetParentChildParametersResponse.class));
EzspGetParentChildParametersResponse response = (EzspGetParentChildParametersResponse) transaction.getResponse();
lastStatus = null;
return response;
}
use of com.zsmartsystems.zigbee.dongle.ember.internal.ezsp.transaction.EzspSingleResponseTransaction in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZigBeeDongleEzsp method setConcentrator.
private TransportConfigResult setConcentrator(ConcentratorConfig concentratorConfig) {
EzspSetConcentratorRequest concentratorRequest = new EzspSetConcentratorRequest();
concentratorRequest.setMinTime(concentratorConfig.getRefreshMinimum());
concentratorRequest.setMaxTime(concentratorConfig.getRefreshMaximum());
concentratorRequest.setMaxHops(concentratorConfig.getMaxHops());
concentratorRequest.setRouteErrorThreshold(concentratorConfig.getMaxFailures());
concentratorRequest.setDeliveryFailureThreshold(concentratorConfig.getMaxFailures());
switch(concentratorConfig.getType()) {
case DISABLED:
concentratorRequest.setEnable(false);
break;
case HIGH_RAM:
concentratorRequest.setConcentratorType(EmberConcentratorType.EMBER_HIGH_RAM_CONCENTRATOR);
concentratorRequest.setEnable(true);
break;
case LOW_RAM:
concentratorRequest.setConcentratorType(EmberConcentratorType.EMBER_LOW_RAM_CONCENTRATOR);
concentratorRequest.setEnable(true);
break;
default:
break;
}
EzspTransaction concentratorTransaction = ashHandler.sendEzspTransaction(new EzspSingleResponseTransaction(concentratorRequest, EzspSetConcentratorResponse.class));
EzspSetConcentratorResponse concentratorResponse = (EzspSetConcentratorResponse) concentratorTransaction.getResponse();
logger.debug(concentratorResponse.toString());
if (concentratorResponse.getStatus() == EzspStatus.EZSP_SUCCESS) {
return TransportConfigResult.SUCCESS;
}
return TransportConfigResult.FAILURE;
}
use of com.zsmartsystems.zigbee.dongle.ember.internal.ezsp.transaction.EzspSingleResponseTransaction in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZigBeeDongleEzsp method initialize.
@Override
public ZigBeeInitializeResponse initialize() {
logger.debug("EZSP dongle initialize.");
zigbeeTransportReceive.setNetworkState(ZigBeeTransportState.UNINITIALISED);
if (!initialiseEzspProtocol()) {
return ZigBeeInitializeResponse.FAILED;
}
// Perform any stack configuration
EmberStackConfiguration stackConfigurer = new EmberStackConfiguration(ashHandler);
Map<EzspConfigId, Integer> configuration = stackConfigurer.getConfiguration(stackConfiguration.keySet());
for (Entry<EzspConfigId, Integer> config : configuration.entrySet()) {
logger.debug("Configuration state {} = {}", config.getKey(), config.getValue());
}
Map<EzspPolicyId, EzspDecisionId> policies = stackConfigurer.getPolicy(stackPolicies.keySet());
for (Entry<EzspPolicyId, EzspDecisionId> policy : policies.entrySet()) {
logger.debug("Policy state {} = {}", policy.getKey(), policy.getValue());
}
stackConfigurer.setConfiguration(stackConfiguration);
configuration = stackConfigurer.getConfiguration(stackConfiguration.keySet());
for (Entry<EzspConfigId, Integer> config : configuration.entrySet()) {
logger.debug("Configuration state {} = {}", config.getKey(), config.getValue());
}
stackConfigurer.setPolicy(stackPolicies);
policies = stackConfigurer.getPolicy(stackPolicies.keySet());
for (Entry<EzspPolicyId, EzspDecisionId> policy : policies.entrySet()) {
logger.debug("Policy state {} = {}", policy.getKey(), policy.getValue());
}
EmberNcp ncp = new EmberNcp(ashHandler);
ncp.getNetworkParameters();
// Add the endpoint
ncp.addEndpoint(1, 0, ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.getId(), new int[] { 0 }, new int[] { 0 });
// Now initialise the network
EzspNetworkInitRequest networkInitRequest = new EzspNetworkInitRequest();
EzspTransaction networkInitTransaction = ashHandler.sendEzspTransaction(new EzspSingleResponseTransaction(networkInitRequest, EzspNetworkInitResponse.class));
EzspNetworkInitResponse networkInitResponse = (EzspNetworkInitResponse) networkInitTransaction.getResponse();
logger.debug(networkInitResponse.toString());
networkParameters = ncp.getNetworkParameters();
ncp.getCurrentSecurityState();
zigbeeTransportReceive.setNetworkState(ZigBeeTransportState.INITIALISING);
logger.debug("EZSP dongle initialize done: Initialised {}", networkInitResponse.getStatus() == EmberStatus.EMBER_NOT_JOINED);
// Check if the network is initialised or if we're yet to join
if (networkInitResponse.getStatus() == EmberStatus.EMBER_NOT_JOINED) {
return ZigBeeInitializeResponse.NOT_JOINED;
}
return ZigBeeInitializeResponse.JOINED;
}
use of com.zsmartsystems.zigbee.dongle.ember.internal.ezsp.transaction.EzspSingleResponseTransaction in project com.zsmartsystems.zigbee by zsmartsystems.
the class EmberNetworkInitialisation method doFormNetwork.
/**
* Forms the ZigBee network
*
* @param panId the panId as int
* @param extendedPanId the extended pan ID as {@link ExtendedPanId}
* @param channel the radio channel to use
* @return true if the network was formed successfully
*/
private boolean doFormNetwork(int panId, ExtendedPanId extendedPanId, int channel) {
EmberNetworkParameters networkParameters = new EmberNetworkParameters();
networkParameters.setJoinMethod(EmberJoinMethod.EMBER_USE_MAC_ASSOCIATION);
networkParameters.setExtendedPanId(extendedPanId);
networkParameters.setPanId(panId);
networkParameters.setRadioChannel(channel);
EzspFormNetworkRequest formNetwork = new EzspFormNetworkRequest();
formNetwork.setParameters(networkParameters);
EzspSingleResponseTransaction transaction = new EzspSingleResponseTransaction(formNetwork, EzspFormNetworkResponse.class);
ashHandler.sendEzspTransaction(transaction);
EzspFormNetworkResponse formNetworkResponse = (EzspFormNetworkResponse) transaction.getResponse();
logger.debug(formNetworkResponse.toString());
if (formNetworkResponse.getStatus() != EmberStatus.EMBER_SUCCESS) {
logger.debug("Error during retrieval of network parameters: {}", formNetworkResponse);
return false;
}
return true;
}
use of com.zsmartsystems.zigbee.dongle.ember.internal.ezsp.transaction.EzspSingleResponseTransaction in project com.zsmartsystems.zigbee by zsmartsystems.
the class EmberNetworkInitialisation method checkNetworkJoined.
private boolean checkNetworkJoined() {
// Check if the network is initialised
EzspNetworkStateRequest networkStateRequest = new EzspNetworkStateRequest();
EzspTransaction networkStateTransaction = ashHandler.sendEzspTransaction(new EzspSingleResponseTransaction(networkStateRequest, EzspNetworkStateResponse.class));
EzspNetworkStateResponse networkStateResponse = (EzspNetworkStateResponse) networkStateTransaction.getResponse();
logger.debug(networkStateResponse.toString());
logger.debug("EZSP networkStateResponse {}", networkStateResponse.getStatus());
return networkStateResponse.getStatus() == EmberNetworkStatus.EMBER_JOINED_NETWORK;
}
Aggregations