From c7e275f2214cff86fa98da9a12c92b685351aad5 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 3 May 2025 08:58:39 +0800 Subject: Get template count. --- fpm.c | 26 ++++++++++++++++++++++---- fpm.h | 4 +++- main.c | 9 ++++++++- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/fpm.c b/fpm.c index 41a106c..e157698 100644 --- a/fpm.c +++ b/fpm.c @@ -178,12 +178,30 @@ uint8_t fpm_setpwd(uint32_t pwd) uint8_t buf[MAXPDLEN]; buf[0] = 0x12; - buf[1] = (uint8_t)((uint32_t)pwd >> 24); - buf[2] = (uint8_t)((uint32_t)pwd >> 16); - buf[3] = (uint8_t)((uint32_t)pwd >> 8); - buf[4] = (uint8_t)((uint32_t)pwd & 0xFF); + buf[1] = (uint8_t)(pwd >> 24); + buf[2] = (uint8_t)(pwd >> 16); + buf[3] = (uint8_t)(pwd >> 8); + buf[4] = (uint8_t)(pwd & 0xFF); send(0x01, buf, 5); recv(buf, &n); return buf[0] == OK; } + +uint16_t fpm_getcount(void) +{ + uint16_t n, count; + uint8_t buf[MAXPDLEN]; + + buf[0] = 0x1D; + send(0x01, buf, 1); + recv(buf, &n); + + count = 0; + if (buf[0] == OK && n >= 2) { + count = buf[1]; + count <<= 8; + count |= buf[2]; + } + return count; +} diff --git a/fpm.h b/fpm.h index fd3b05c..8fae397 100644 --- a/fpm.h +++ b/fpm.h @@ -17,6 +17,8 @@ uint8_t fpm_init(void); uint8_t fpm_getcfg(struct fpm_config *cfg); -uint8_t fpm_setpwd(); +uint8_t fpm_setpwd(uint32_t pwd); + +uint16_t fpm_getcount(void); #endif /* FPM_H */ diff --git a/main.c b/main.c index 37ef329..1b8b264 100644 --- a/main.c +++ b/main.c @@ -85,13 +85,20 @@ static inline void print_config(void) int main(void) { + char s[20]; + uint16_t template_count; + cli(); Soft_UART_init(); bit_set(DDRB,5); sei(); - if (fpm_init()) + if (fpm_init()) { print_config(); + template_count = fpm_getcount(); + snprintf(s, 20, "Template count: %d", template_count); + uart_write(s); + } while (1) { -- cgit v1.2.3