3 * Copyright (c) 2020 Project CHIP Authors
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 * Copyright (c) 2020 Silicon Labs
22 * Licensed under the Apache License, Version 2.0 (the "License");
23 * you may not use this file except in compliance with the License.
24 * You may obtain a copy of the License at
26 * http://www.apache.org/licenses/LICENSE-2.0
28 * Unless required by applicable law or agreed to in writing, software
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 /****************************************************************************
36 * @brief Routines for the Temperature Measurement Server
38 *******************************************************************************
39 ******************************************************************************/
41 #include "temperature-measurement-server.h"
43 #include <app/util/af.h>
45 #include <app/util/af-event.h>
46 #include <app/util/attribute-storage.h>
48 #include "gen/attribute-id.h"
49 #include "gen/attribute-type.h"
50 #include "gen/cluster-id.h"
54 EmberEventControl emberAfPluginTemperatureMeasurementServerReadEventControl;
56 // TODO: There's no header that declares this event handler, and it's not 100%
57 // clear where best to declare it.
58 // https://github.com/project-chip/connectedhomeip/issues/3619
59 void emberAfPluginTemperatureMeasurementServerReadEventHandler() {}
61 void emberAfPluginTemperatureMeasurementServerStackStatusCallback(EmberStatus status) {}
63 // -------------------------------------------------------------------------
64 // ****** callback section *******
66 void emberAfPluginTemperatureMeasurementServerInitCallback(void)
69 // FIXME Use real values for the temperature sensor polling the sensor using the
70 // EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_SERVER_MAX_MEASUREMENT_FREQUENCY_S macro
71 EndpointId endpointId = 1; // Hardcoded to 1 for now
72 int16_t newValue = 0x1234;
74 status = emberAfWriteAttribute(endpointId, ZCL_TEMP_MEASUREMENT_CLUSTER_ID, ZCL_CURRENT_TEMPERATURE_ATTRIBUTE_ID,
75 CLUSTER_MASK_SERVER, (uint8_t *) &newValue, ZCL_INT16S_ATTRIBUTE_TYPE);
76 if (status != EMBER_ZCL_STATUS_SUCCESS)
78 emberAfTempMeasurementClusterPrint("Err: writing temperature: %x", status);
83 EmberAfStatus emberAfPluginTemperatureMeasurementSetValueCallback(EndpointId endpoint, int16_t value)
85 EmberAfStatus status = emberAfWriteAttribute(endpoint, ZCL_TEMP_MEASUREMENT_CLUSTER_ID, ZCL_CURRENT_TEMPERATURE_ATTRIBUTE_ID,
86 CLUSTER_MASK_SERVER, (uint8_t *) &value, ZCL_INT16S_ATTRIBUTE_TYPE);
87 if (status != EMBER_ZCL_STATUS_SUCCESS)
89 emberAfTempMeasurementClusterPrint("Err: writing temperature: %x", status);