Skip to content

Commit eb22ea8

Browse files
Merge pull request #247 from Telecominfraproject/UT_adt7481
UT for adt7481
2 parents 276df6f + 642c8cc commit eb22ea8

6 files changed

Lines changed: 1188 additions & 6 deletions

File tree

firmware/ec/inc/devices/adt7481.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,5 +167,17 @@ ReturnStatus adt7481_get_therm_hysteresis(const I2C_Dev *i2c_dev,
167167
int8_t *tempHysteresisValue);
168168
ReturnStatus adt7481_set_therm_hysteresis(const I2C_Dev *i2c_dev,
169169
int8_t tempHysteresisValue);
170+
ReturnStatus adt7481_set_remote1_temp_therm_limit(const I2C_Dev *i2c_dev,
171+
int8_t tempLimitValue);
172+
ReturnStatus adt7481_set_remote1_temp_high_limit(const I2C_Dev *i2c_dev,
173+
int8_t tempLimitValue);
174+
ReturnStatus adt7481_set_remote1_temp_low_limit(const I2C_Dev *i2c_dev,
175+
int8_t tempLimitValue);
176+
ReturnStatus adt7481_get_remote1_temp_therm_limit(const I2C_Dev *i2c_dev,
177+
int8_t *tempLimitValue);
178+
ReturnStatus adt7481_get_remote1_temp_high_limit(const I2C_Dev *i2c_dev,
179+
int8_t *tempLimitValue);
180+
ReturnStatus adt7481_get_remote1_temp_low_limit(const I2C_Dev *i2c_dev,
181+
int8_t *tempLimitValue);
170182

171183
#endif /* ADT7481_H_ */

firmware/ec/src/devices/adt7481.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,11 @@ ePostCode adt7481_probe(const I2C_Dev *i2c_dev, POSTData *postData)
245245
} else if ((devId == TEMP_ADT7481_DEV_ID) &&
246246
(manfId == TEMP_ADT7481_MANF_ID)) {
247247
postcode = POST_DEV_FOUND;
248+
post_update_POSTData(postData, i2c_dev->bus, i2c_dev->slave_addr,
249+
manfId, devId);
248250
} else {
249251
postcode = POST_DEV_ID_MISMATCH;
250252
}
251-
post_update_POSTData(postData, i2c_dev->bus, i2c_dev->slave_addr, manfId,
252-
devId);
253253
return postcode;
254254
}
255255

@@ -1122,7 +1122,7 @@ ReturnStatus adt7481_set_remote1_temp_offset(const I2C_Dev *i2c_dev,
11221122
int16_t tempOffsetValue)
11231123
{
11241124
ReturnStatus status = RETURN_NOTOK;
1125-
uint8_t regValue = 0x0000;
1125+
uint16_t regValue = 0x0000;
11261126

11271127
/* Converting Temp limit into the register value */
11281128
regValue = TEMP_TO_REG_U16(tempOffsetValue);
@@ -1132,7 +1132,7 @@ ReturnStatus adt7481_set_remote1_temp_offset(const I2C_Dev *i2c_dev,
11321132
(uint8_t)regValue);
11331133
if (status == RETURN_OK) {
11341134
/* Write MSB data */
1135-
status = adt7481_raw_write(i2c_dev, ADT7481_REG_W_REMOTE1_OFFSET_L,
1135+
status = adt7481_raw_write(i2c_dev, ADT7481_REG_W_REMOTE1_OFFSET_H,
11361136
(uint8_t)(regValue >> 8));
11371137
}
11381138
return status;
@@ -1162,7 +1162,7 @@ ReturnStatus adt7481_get_remote2_temp_offset(const I2C_Dev *i2c_dev,
11621162
tempOffsetValue = NULL;
11631163
} else {
11641164
/* Read MSB data */
1165-
status = adt7481_raw_read(i2c_dev, ADT7481_REG_R_REMOTE2_OFFSET_L,
1165+
status = adt7481_raw_read(i2c_dev, ADT7481_REG_R_REMOTE2_OFFSET_H,
11661166
&hRegValue);
11671167
if (status != RETURN_OK) {
11681168
tempOffsetValue = NULL;
@@ -1188,7 +1188,7 @@ ReturnStatus adt7481_set_remote2_temp_offset(const I2C_Dev *i2c_dev,
11881188
int8_t tempOffsetValue)
11891189
{
11901190
ReturnStatus status = RETURN_NOTOK;
1191-
uint8_t regValue = 0x0000;
1191+
uint16_t regValue = 0x0000;
11921192

11931193
/* Converting Temp limit into the register value */
11941194
regValue = TEMP_TO_REG_U16(tempOffsetValue);

firmware/ec/test/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,9 @@ $(PATHB)Test_led$(TARGET_EXTENSION): $(STD_FILES) $(TEST_LED_SRC)
203203
TEST_OCMP_LED_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_led.c $(OCWARE_ROOT)/src/devices/led.c $(OCWARE_ROOT)/src/devices/sx1509.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c fake/fake_SX1509_register.c fake/fake_led.c stub/stub_GateMutex.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_LED.c
204204
$(PATHB)Test_ocmp_led$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_LED_SRC)
205205

206+
TEST_ADT7481_SRC=$(OCWARE_ROOT)/src/devices/adt7481.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c fake/fake_adt7481.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/post/post_util.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_SDR.c
207+
$(PATHB)Test_adt7481$(TARGET_EXTENSION): $(STD_FILES) $(TEST_ADT7481_SRC)
208+
206209
$(PATHB)%$(TARGET_EXTENSION):
207210
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
208211
$(COV_CMDS)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* Copyright (c) 2017-present, Facebook, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the BSD-style license found in the
6+
* LICENSE file in the root directory of this source tree. An additional grant
7+
* of patent rights can be found in the PATENTS file in the same directory.
8+
*/
9+
#include "include/test_adt7481.h"
10+
11+
OcGpio_Port s_fake_io_port = {
12+
.fn_table = &FakeGpio_fnTable,
13+
.object_data = &(FakeGpio_Obj){},
14+
};
15+
16+
const I2C_Dev adt_invalid_dev = {
17+
.bus = 7,
18+
.slave_addr = 0x52,
19+
};
20+
21+
const I2C_Dev adt_invalid_bus = {
22+
.bus = 3,
23+
.slave_addr = 0x2F,
24+
};
25+
26+
uint8_t ADT7481_regs[] = {
27+
[ADT7481_REG_LOCAL_TEMP_R] = 0x00,
28+
[ADT7481_REG_REMOTE_1_TEMP_HIGH_BYTE_R] = 0x00,
29+
[ADT7481_REG_STATUS_1_R] = 0x00,
30+
[ADT7481_REG_CONFIGURATION_1_R] = 0x00,
31+
[ADT7481_REG_COVERSION_RATE_CHANNEL_SEL_R] = 0x00,
32+
[ADT7481_REG_LOCAL_TEMP_HIGH_LIMIT_R] = 0x00,
33+
[ADT7481_REG_LOCAL_TEMP_LOW_LIMIT_R] = 0x00,
34+
[ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_R] = 0x00,
35+
[ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_R] = 0x00,
36+
[ADT7481_REG_CONFIGURATION_1_W] = 0x00,
37+
[ADT7481_REG_COVERSION_RATE_CHANNEL_SEL_W] = 0x00,
38+
[ADT7481_REG_LOCAL_TEMP_HIGH_LIMIT_W] = 0x00,
39+
[ADT7481_REG_LOCAL_TEMP_LOW_LIMIT_W] = 0x00,
40+
[ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_W] = 0x00,
41+
[ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_W] = 0x00,
42+
[ADT7481_REG_ONE_SHOT_W] = 0x00,
43+
[ADT7481_REG_REMOTE_1_TEMP_LOW_BYTE_R] = 0x00,
44+
[ADT7481_REG_REMOTE_1_TEMP_OFFSET_HIGH_BYTE_R] = 0x00,
45+
[ADT7481_REG_REMOTE_1_TEMP_OFFSET_LOW_BYTE_R] = 0x00,
46+
[ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_LOW_BYTE_R] = 0x00,
47+
[ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_LOW_BYTE_R] = 0x00,
48+
[ADT7481_REG_REMOTE_1_THERM_LIMIT_R] = 0x00,
49+
[ADT7481_REG_LOCAL_THERM_LIMIT_R] = 0x00,
50+
[ADT7481_REG_THERM_HYSTERESIS_R] = 0x00,
51+
[ADT7481_REG_CONSECUTIVE_ALERT_R] = 0x00,
52+
[ADT7481_REG_STATUS_2_R] = 0x00,
53+
[ADT7481_REG_CONFIGURATION_2_R] = 0x00,
54+
[ADT7481_REG_REMOTE_2_TEMP_HIGH_BYTE_R] = 0x00,
55+
[ADT7481_REG_REMOTE_2_TEMP_HIGH_LIMIT_R] = 0x00,
56+
[ADT7481_REG_REMOTE_2_TEMP_LOW_LIMIT_R] = 0x00,
57+
[ADT7481_REG_REMOTE_2_TEMP_LOW_BYTE_R] = 0x00,
58+
[ADT7481_REG_REMOTE_2_TEMP_OFFSET_HIGH_BYTE_R] = 0x00,
59+
[ADT7481_REG_REMOTE_2_TEMP_OFFSET_LOW_BYTE_R] = 0x00,
60+
[ADT7481_REG_REMOTE_2_TEMP_HIGH_LIMIT_LOW_BYTE_R] = 0x00,
61+
[ADT7481_REG_REMOTE_2_TEMP_LOW_LIMIT_LOW_BYTE_R] = 0x00,
62+
[ADT7481_REG_REMOTE_2_THERM_LIMIT_R] = 0x00,
63+
[ADT7481_REG_DEVICE_ID_R] = 0x00,
64+
[ADT7481_REG_MAN_ID_R] = 0x00,
65+
[ADT7481_REG_END] = 0x00,
66+
};
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/**
2+
* Copyright (c) 2017-present, Facebook, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the BSD-style license found in the
6+
* LICENSE file in the root directory of this source tree. An additional grant
7+
* of patent rights can be found in the PATENTS file in the same directory.
8+
*/
9+
#ifndef _TEST_ADT7481_H
10+
#define _TEST_ADT7481_H
11+
12+
#include "fake/fake_GPIO.h"
13+
#include "fake/fake_I2C.h"
14+
#include "fake/fake_ThreadedISR.h"
15+
#include "inc/devices/adt7481.h"
16+
#include <stdbool.h>
17+
#include <string.h>
18+
#include "unity.h"
19+
20+
#define ADT7481_CONFIG1_SET_VALUE 0x59
21+
#define ADT7481_CONFIG1_VALUE 0x58
22+
#define ADT7481_COVERSION_RATE_CHANNEL_SEL 0x61
23+
#define ADT7481_DEFAULT_VAL 0xFF
24+
#define ADT7481_INVALID_DEV_ID 0x80
25+
#define ADT7481_INVALID_MANF_ID 0x40
26+
#define ADT7481_LOCAL_TEMP_R_VAL 0x63
27+
#define ADT7481_REMOTE_1_TEMP_HIGH_BYTE_R_VAL 0x54
28+
#define ADT7481_REMOTE_1_TEMP_LOW_BYTE_R_VAL 0x65
29+
#define ADT7481_REMOTE_2_TEMP_HIGH_BYTE_R_VAL 0x73
30+
#define ADT7481_REMOTE_2_TEMP_LOW_BYTE_R_VAL 0x67
31+
#define ADT7481_SET_COVERSION_RATE_CHANNEL_SEL 0x62
32+
#define ADT7481_SET_LOCAL_TEMP_LIMIT1 -63
33+
#define ADT7481_SET_LOCAL_TEMP_LIMIT2 -62
34+
#define ADT7481_SET_LOCAL_TEMP_LIMIT3 -61
35+
#define ADT7481_SET_LOCAL_TEMP_LIMIT4 -60
36+
#define ADT7481_STATUS_1_R_VAL 0x63
37+
#define ADT7481_STATUS_2_R_VAL 0x64
38+
#define ADT7481_TEMP_LIMIT1 0x41
39+
#define ADT7481_TEMP_LIMIT2 0x42
40+
#define ADT7481_TEMP_LIMIT3 0x43
41+
#define ADT7481_TEMP_LIMIT4 0x44
42+
#define ADT7481_REMOTE_TEMP_LIMIT 0x62
43+
#define ADT7481_REMOTE_1_TEMP_HIGH_LIMIT_LOW_BYTE_R_VAl 0x1A
44+
#define ADT7481_REMOTE_1_TEMP_HIGH_LIMIT_R_VAL 0x50
45+
#define ADT7481_REMOTE_1_THER_LIMIT_R_VAL 0x85
46+
#define ADT7481_REMOTE_1_TEMP_LOW_LIMIT_LOW_BYTE_R_VAL 0x67
47+
#define ADT7481_REMOTE_1_TEMP_LOW_LIMIT_R_VAL 0x89
48+
#define ADT7481_REMOTE_1_TEMP_OFFSET_HIGH_BYTE_R 0x70
49+
#define ADT7481_REMOTE_1_TEMP_OFFSET_LOW_BYTE_R 0x67
50+
#define ADT7481_REMOTE_2_TEMP_LIMIT 0x90
51+
#define CONF_TEMP_ADT7481_INVALID_PARAM 4
52+
#define POST_DATA_NULL 0x00
53+
#define REG_U8_TO_TEMP(y) (y - 64)
54+
#define REG_U16_TO_TEMP(y) (y - 64)
55+
#define TEMP_TO_REG_U8(x) (x + 64)
56+
#define TEMP_TO_REG_U16(x) ((x + 64) << 8)
57+
58+
typedef enum ADT7481Regs {
59+
ADT7481_REG_LOCAL_TEMP_R = 0x00,
60+
ADT7481_REG_REMOTE_1_TEMP_HIGH_BYTE_R,
61+
ADT7481_REG_STATUS_1_R,
62+
ADT7481_REG_CONFIGURATION_1_R,
63+
ADT7481_REG_COVERSION_RATE_CHANNEL_SEL_R,
64+
ADT7481_REG_LOCAL_TEMP_HIGH_LIMIT_R,
65+
ADT7481_REG_LOCAL_TEMP_LOW_LIMIT_R,
66+
ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_R,
67+
ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_R,
68+
ADT7481_REG_CONFIGURATION_1_W,
69+
ADT7481_REG_COVERSION_RATE_CHANNEL_SEL_W,
70+
ADT7481_REG_LOCAL_TEMP_HIGH_LIMIT_W,
71+
ADT7481_REG_LOCAL_TEMP_LOW_LIMIT_W,
72+
ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_W,
73+
ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_W,
74+
ADT7481_REG_ONE_SHOT_W,
75+
ADT7481_REG_REMOTE_1_TEMP_LOW_BYTE_R,
76+
ADT7481_REG_REMOTE_1_TEMP_OFFSET_HIGH_BYTE_R,
77+
ADT7481_REG_REMOTE_1_TEMP_OFFSET_LOW_BYTE_R,
78+
ADT7481_REG_REMOTE_1_TEMP_HIGH_LIMIT_LOW_BYTE_R,
79+
ADT7481_REG_REMOTE_1_TEMP_LOW_LIMIT_LOW_BYTE_R,
80+
ADT7481_REG_REMOTE_1_THERM_LIMIT_R = 0x19,
81+
ADT7481_REG_LOCAL_THERM_LIMIT_R = 0x20,
82+
ADT7481_REG_THERM_HYSTERESIS_R,
83+
ADT7481_REG_CONSECUTIVE_ALERT_R,
84+
ADT7481_REG_STATUS_2_R,
85+
ADT7481_REG_CONFIGURATION_2_R,
86+
ADT7481_REG_REMOTE_2_TEMP_HIGH_BYTE_R = 0x30,
87+
ADT7481_REG_REMOTE_2_TEMP_HIGH_LIMIT_R,
88+
ADT7481_REG_REMOTE_2_TEMP_LOW_LIMIT_R,
89+
ADT7481_REG_REMOTE_2_TEMP_LOW_BYTE_R,
90+
ADT7481_REG_REMOTE_2_TEMP_OFFSET_HIGH_BYTE_R,
91+
ADT7481_REG_REMOTE_2_TEMP_OFFSET_LOW_BYTE_R,
92+
ADT7481_REG_REMOTE_2_TEMP_HIGH_LIMIT_LOW_BYTE_R,
93+
ADT7481_REG_REMOTE_2_TEMP_LOW_LIMIT_LOW_BYTE_R,
94+
ADT7481_REG_REMOTE_2_THERM_LIMIT_R = 0x39,
95+
ADT7481_REG_DEVICE_ID_R = 0x3D,
96+
ADT7481_REG_MAN_ID_R,
97+
ADT7481_REG_END = 0xFF,
98+
} ADT7481Regs;
99+
100+
#endif

0 commit comments

Comments
 (0)