utils: add get_datetime and fat32_datetime
This commit is contained in:
@@ -1,11 +1,15 @@
|
|||||||
#ifndef UTILS_H
|
#ifndef UTILS_H
|
||||||
#define UTILS_H
|
#define UTILS_H
|
||||||
#include "../include/types.h"
|
#include "../include/types.h"
|
||||||
|
#include "../include/stdio.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
uint8 inportb(uint16 _port);
|
uint8 inportb(uint16 _port);
|
||||||
void outportb(uint16 _port, uint8 _data);
|
void outportb(uint16 _port, uint8 _data);
|
||||||
uint8_t get_rtc(uint8_t reg);
|
uint8_t get_rtc(uint8_t reg);
|
||||||
void get_fancy_datetime();
|
void get_fancy_datetime();
|
||||||
|
void get_datetime(uint16_t *year, uint8_t *month, uint8_t *day, uint8_t *hour, uint8_t *minute, uint8_t *second);
|
||||||
|
uint32_t fat32_datetime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second);
|
||||||
|
|
||||||
#define inb inportb
|
#define inb inportb
|
||||||
#define outb outportb
|
#define outb outportb
|
||||||
|
|||||||
+24
@@ -33,3 +33,27 @@ void get_fancy_datetime()
|
|||||||
uint8_t second = get_rtc(0x00);
|
uint8_t second = get_rtc(0x00);
|
||||||
printf("%X-%X-%X%X %X:%X:%X\n", day_of_month, month, century, year, hour, minute, second);
|
printf("%X-%X-%X%X %X:%X:%X\n", day_of_month, month, century, year, hour, minute, second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void get_datetime(uint16_t *year, uint8_t *month, uint8_t *day, uint8_t *hour, uint8_t *minute, uint8_t *second)
|
||||||
|
{
|
||||||
|
uint8_t century = get_rtc(0x32);
|
||||||
|
uint8_t year_rtc = get_rtc(0x09);
|
||||||
|
|
||||||
|
*year = century * 100 + year_rtc;
|
||||||
|
*month = get_rtc(0x08);
|
||||||
|
*day = get_rtc(0x07);
|
||||||
|
*hour = get_rtc(0x04);
|
||||||
|
*minute = get_rtc(0x02);
|
||||||
|
*second = get_rtc(0x00);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t fat32_datetime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
|
||||||
|
{
|
||||||
|
uint16_t fat_year = year - 1980;
|
||||||
|
|
||||||
|
uint16_t fat_date = (fat_year << 9) | ((month & 0x0F) << 5) | (day & 0x1F);
|
||||||
|
uint16_t fat_time = (hour & 0x1F) << 11 | ((minute & 0x3F) >> 1) << 5 | (second / 2) & 0x1F;
|
||||||
|
uint32_t fat_datetime = ((uint32_t)fat_date << 16) | fat_time;
|
||||||
|
|
||||||
|
return fat_datetime;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user