protected IZclFrame parseZoneStatusChangeNotification(IASZoneClient o, IZclFrame zclFrame)
      throws ApplianceException, ServiceClusterException {
    int ZoneStatus = ZclDataTypeBitmap16.zclParse(zclFrame);
    short ExtendedStatus = ZclDataTypeBitmap8.zclParse(zclFrame);
    short ZoneID = 0xff;
    int Delay = 0;
    boolean gotZoneId = false;

    // Added the following code to mantain the compatibility with HA 1.1
    // devices
    try {
      ZoneID = ZclDataTypeUI8.zclParse(zclFrame);
      gotZoneId = true;
      Delay = ZclDataTypeUI16.zclParse(zclFrame);
    } catch (Exception e) {
      if (gotZoneId)
        throw new ZclValidationException("missing Delay in ZoneStatusChangeNotification");
    }

    if (o == null) {
      return null;
    }
    o.execZoneStatusChangeNotification(
        ZoneStatus, ExtendedStatus, ZoneID, Delay, endPoint.getDefaultRequestContext());
    return null;
  }
 public int getZoneStatus(IEndPointRequestContext context)
     throws ApplianceException, ServiceClusterException {
   if (context != null) {
     Integer objectResult = null;
     objectResult =
         ((Integer) getValidCachedAttributeObject(2, context.getMaxAgeForAttributeValues()));
     if (objectResult != null) {
       return objectResult.intValue();
     }
   }
   IZclFrame zclFrame = readAttribute(2, context);
   int v = ZclDataTypeBitmap16.zclParse(zclFrame);
   setCachedAttributeObject(2, new Integer(v));
   return v;
 }