SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트). 전체 코드리뷰에서 도출된 보안 하드닝 10건 반영: - 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시) - 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php) - 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점) - CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php) - 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화 _backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
22 lines
968 B
C
22 lines
968 B
C
/* =============================================================================
|
|
* sht30_convert.h - SHT30 원시 데이터 변환/CRC (이식성 있는 순수 로직)
|
|
*
|
|
* I2C 전송과 분리하여 호스트/ARM 컴파일 게이트에서 검증 가능하게 한다.
|
|
* RPi 대응: sht30_monitor.py crc8_sht3x() / read_sht30() 변환식.
|
|
* ===========================================================================*/
|
|
#ifndef SHT30_CONVERT_H
|
|
#define SHT30_CONVERT_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
/* SHT3x CRC-8: poly 0x31, init 0xFF, no reflection, no final xor. */
|
|
uint8_t sht30_crc8(const uint8_t *data, size_t len);
|
|
|
|
/* 6바이트 측정 프레임(T_msb,T_lsb,T_crc,RH_msb,RH_lsb,RH_crc) 검증 + 변환.
|
|
* *temp_c = -45 + 175 * raw_t / 65535
|
|
* *rh = 100 * raw_rh / 65535
|
|
* 반환: 0 성공, -1 온도 CRC 오류, -2 습도 CRC 오류. */
|
|
int sht30_parse(const uint8_t frame[6], double *temp_c, double *rh);
|
|
|
|
#endif /* SHT30_CONVERT_H */
|