Definition in file decode.c.
#include <libheraia.h>
Go to the source code of this file.
Functions | |
static gboolean | bissextile_year (guint32 year) |
Says whether a year is a leap one or not. | |
static void | calc_which_month_day (date_and_time_t *mydate, guint32 day, guint tab_ns_months[12]) |
Says, from a number of days (eg 154), which month it is (eg may) and which day in the corresponding month (eg 2 (leap year) or 3). | |
static void | which_month_day (date_and_time_t *mydate, guint32 day, gboolean bi) |
Front end function for the calc_which_month_day function ! | |
static guint32 | remove_days_from_first_january (guint32 base_year, guint8 base_month, guint8 base_day) |
Returns the number of days since 01/01/base_year eg 15/02/base_year --> 31 + 15 = 46. | |
static void | which_year_month_day (date_and_time_t *mydate, guint32 days, guint32 base_year, guint base_month, guint8 base_day) |
About date calculation : Leap years are periods of 4 years except the years that we can divide by 100 and not 400. | |
static void | make_date_and_time (date_and_time_t *mydate, guchar *data, guint8 len, guint64 nbticks, guint32 base_year, guint base_month, guint8 base_day) |
Reads the data from the stream (specified length !! <= 8 or 64 bits to decode). | |
static void | transform_bcd_to_human (gchar *bcd, guint8 part, guint8 part_number) |
transcribes the bcd number "part" into a | |
gchar * | decode_8bits_signed (guchar *data) |
General purpose of this function is to take a 1 byte data stream and convert it as if it is an 8 bits signed number. | |
gchar * | decode_8bits_unsigned (guchar *data) |
general purpose of this function is to take a 1 byte data stream and convert it as if it is an 8 bits unsigned number | |
gchar * | decode_16bits_signed (guchar *data) |
general purpose of this function is to take a 2 byte data stream and convert it as if it is a 16 bits signed number | |
gchar * | decode_16bits_unsigned (guchar *data) |
general purpose of this function is to take a 2 byte data stream and convert it as if it is a 16 bits unsigned number | |
gchar * | decode_32bits_signed (guchar *data) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a 32 bits signed number | |
gchar * | decode_32bits_unsigned (guchar *data) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a 32 bits unsigned number | |
gchar * | decode_64bits_signed (guchar *data) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a 64 bits signed number | |
gchar * | decode_64bits_unsigned (guchar *data) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a 64 bits unsigned number | |
static gchar * | date_printf (date_and_time_t *mydate) |
Return a gchar * that contains the date and time encoded from the values contained in the date_and_time_t structure it may be freed when no longer needed We do not use any of the g_date_strftime or strftime function because interpreted dates are not always valid ! | |
gchar * | decode_dos_date (guchar *data, date_and_time_t *mydate) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a dos date. | |
gchar * | decode_filetime_date (guchar *data, date_and_time_t *mydate) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a filetime date. | |
gchar * | decode_C_date (guchar *data, date_and_time_t *mydate) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a C date. | |
gchar * | decode_HFS_date (guchar *data, date_and_time_t *mydate) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a HFS date. | |
gchar * | decode_to_bits (guchar *data) |
decodes the stream represented by *data (one byte) to a string containing eight 0 or 1 (Little Endian style) | |
gchar * | decode_packed_BCD (guchar *data) |
Decode one byte as a Packed BCD (Binary Coded Decimal) and return a gchar* that may be freed when no longer needed. | |
gboolean | swap_bytes (guchar *to_swap, guint first, guint last) |
Swap bytes from the buffer to_swap. | |
void | reverse_byte_order (guchar *to_reverse) |
Reverse the byte order LSB -> MSB in MSB -> LSB 12345678 in 87654321. |
static gboolean bissextile_year | ( | guint32 | year | ) | [static] |
Says whether a year is a leap one or not.
year | : a guint32 representing a year such as 2009 |
Definition at line 231 of file decode.c.
Referenced by remove_days_from_first_january(), and which_year_month_day().
static void calc_which_month_day | ( | date_and_time_t * | mydate, | |
guint32 | day, | |||
guint | tab_ns_months[12] | |||
) | [static] |
Says, from a number of days (eg 154), which month it is (eg may) and which day in the corresponding month (eg 2 (leap year) or 3).
[out] | mydate | : Filled date structure |
day | : guint32 representing the number of day in the year (1..365/366) | |
tab_ns_months | : an array filled with the cumulative number of days for each month (31 to 365/366) |
Definition at line 266 of file decode.c.
References date_and_time_t::day, and date_and_time_t::month.
Referenced by which_month_day().
gchar * date_printf | ( | date_and_time_t * | mydate | ) | [static] |
Return a gchar * that contains the date and time encoded from the values contained in the date_and_time_t structure it may be freed when no longer needed We do not use any of the g_date_strftime or strftime function because interpreted dates are not always valid !
[in] | mydate | : structure that contains a date |
Definition at line 463 of file decode.c.
References date_and_time_t::day, date_and_time_t::hour, date_and_time_t::minutes, date_and_time_t::month, date_and_time_t::seconds, and date_and_time_t::year.
Referenced by decode_C_date(), decode_dos_date(), decode_filetime_date(), and decode_HFS_date().
gchar * decode_16bits_signed | ( | guchar * | data | ) |
general purpose of this function is to take a 2 byte data stream and convert it as if it is a 16 bits signed number
data | : 2 guchars |
Definition at line 95 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_16bits_unsigned | ( | guchar * | data | ) |
general purpose of this function is to take a 2 byte data stream and convert it as if it is a 16 bits unsigned number
data | : 2 guchars |
Definition at line 118 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_32bits_signed | ( | guchar * | data | ) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a 32 bits signed number
data | : 4 guchars |
Definition at line 141 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_32bits_unsigned | ( | guchar * | data | ) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a 32 bits unsigned number
data | : 4 guchars |
Definition at line 164 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_64bits_signed | ( | guchar * | data | ) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a 64 bits signed number
data | : 8 guchars |
Definition at line 186 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_64bits_unsigned | ( | guchar * | data | ) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a 64 bits unsigned number
data | : 8 guchars |
Definition at line 209 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_8bits_signed | ( | guchar * | data | ) |
General purpose of this function is to take a 1 byte data stream and convert it as if it is an 8 bits signed number.
data | : 1 guchar |
Definition at line 48 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_8bits_unsigned | ( | guchar * | data | ) |
general purpose of this function is to take a 1 byte data stream and convert it as if it is an 8 bits unsigned number
data | : 1 guchar |
Definition at line 71 of file decode.c.
Referenced by refresh_data_interpretor_window().
gchar * decode_C_date | ( | guchar * | data, | |
date_and_time_t * | mydate | |||
) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a C date.
If it is not, the result may be funny ! Counting seconds from 01/01/1970
data | : 4 guchars | |
[out] | mydate | : date_and_time_t * structure that contain the resulting date |
Definition at line 561 of file decode.c.
References date_printf(), and make_date_and_time().
Referenced by refresh_data_interpretor_window().
gchar * decode_dos_date | ( | guchar * | data, | |
date_and_time_t * | mydate | |||
) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a dos date.
If it is not, the result may be funny !
data | : 4 guchars | |
[out] | mydate | : date_and_time_t * structure that contain the resulting date |
Definition at line 478 of file decode.c.
References date_printf(), date_and_time_t::day, date_and_time_t::hour, date_and_time_t::minutes, date_and_time_t::month, date_and_time_t::seconds, and date_and_time_t::year.
Referenced by refresh_data_interpretor_window().
gchar * decode_filetime_date | ( | guchar * | data, | |
date_and_time_t * | mydate | |||
) |
general purpose of this function is to take a 8 byte data stream and convert it as if it is a filetime date.
If it is not, the result may be funny ! Counting 100th of nanoseconds from 01/01/1601
data | : 8 guchars | |
[out] | mydate | : date_and_time_t * structure that contain the resulting date |
Definition at line 538 of file decode.c.
References date_printf(), and make_date_and_time().
Referenced by refresh_data_interpretor_window().
gchar * decode_HFS_date | ( | guchar * | data, | |
date_and_time_t * | mydate | |||
) |
general purpose of this function is to take a 4 byte data stream and convert it as if it is a HFS date.
If it is not, the result may be funny ! Counting seconds 01/01/1904
data | : 4 guchars | |
[out] | mydate | : date_and_time_t * structure that contain the resulting date |
Definition at line 583 of file decode.c.
References date_printf(), and make_date_and_time().
Referenced by refresh_data_interpretor_window().
gchar * decode_packed_BCD | ( | guchar * | data | ) |
Decode one byte as a Packed BCD (Binary Coded Decimal) and return a gchar* that may be freed when no longer needed.
data | : stream to decode as 1 guchar |
Definition at line 704 of file decode.c.
References transform_bcd_to_human().
Referenced by refresh_data_interpretor_window().
gchar * decode_to_bits | ( | guchar * | data | ) |
decodes the stream represented by *data (one byte) to a string containing eight 0 or 1 (Little Endian style)
data | : 1 guchar |
Definition at line 606 of file decode.c.
Referenced by refresh_data_interpretor_window().
static void make_date_and_time | ( | date_and_time_t * | mydate, | |
guchar * | data, | |||
guint8 | len, | |||
guint64 | nbticks, | |||
guint32 | base_year, | |||
guint | base_month, | |||
guint8 | base_day | |||
) | [static] |
Reads the data from the stream (specified length !! <= 8 or 64 bits to decode).
[out] | mydate | : date_and_time_t * structure that contain the resulting date |
data | : a guchar * as a stream to decode as a date | |
len | : guint8 as length of the stream in bytes (must be <= 8 or 64 bits to decode) | |
nbticks | : guint64 that tells the number of ticks per seconds (1, 1000, ...) | |
base_year | : guint32, Epoch year (1970, 1904, ...) | |
base_month | : guint32, Epoch month (january, ...) | |
base_day | : guint32 Epoch day (01, 15, ...) |
Definition at line 511 of file decode.c.
References date_and_time_t::hour, date_and_time_t::minutes, date_and_time_t::seconds, and which_year_month_day().
Referenced by decode_C_date(), decode_filetime_date(), and decode_HFS_date().
static guint32 remove_days_from_first_january | ( | guint32 | base_year, | |
guint8 | base_month, | |||
guint8 | base_day | |||
) | [static] |
Returns the number of days since 01/01/base_year eg 15/02/base_year --> 31 + 15 = 46.
base_year | : year where we want to begin the calculation | |
base_month | : month (in the example 02) | |
base_day | : day in the month (from the example 15) |
Definition at line 336 of file decode.c.
References bissextile_year().
Referenced by which_year_month_day().
reverse_byte_order | ( | guchar * | to_reverse | ) |
Reverse the byte order LSB -> MSB in MSB -> LSB 12345678 in 87654321.
[in,out] | to_reverse | : one guchar to be reversed |
Definition at line 758 of file decode.c.
Referenced by change_endianness().
gboolean swap_bytes | ( | guchar * | to_swap, | |
guint | first, | |||
guint | last | |||
) |
Swap bytes from the buffer to_swap.
[in,out] | to_swap | : buffer to swap |
first | : first byte in the buffer to swap | |
last | : last byte in the buffer to swap |
Definition at line 735 of file decode.c.
References swap_bytes().
Referenced by change_endianness(), and swap_bytes().
static void transform_bcd_to_human | ( | gchar * | bcd, | |
guint8 | part, | |||
guint8 | part_number | |||
) | [static] |
transcribes the bcd number "part" into a
[out] | bcd | : gchar * human readable string |
part | : guint8 as an half byte to decode | |
part_number | : 0 or 1 as MSB and LSB Coding style is from ETSI GSM 04.08 ETS 300557 p387 |
Definition at line 637 of file decode.c.
Referenced by decode_packed_BCD().
static void which_month_day | ( | date_and_time_t * | mydate, | |
guint32 | day, | |||
gboolean | bi | |||
) | [static] |
Front end function for the calc_which_month_day function !
[out] | mydate | : Filled date structure |
day | : guint32 representing the number of day in the year (1..365/366) | |
bi | : TRUE if it's a leap year, FALSE instead |
Definition at line 294 of file decode.c.
References calc_which_month_day(), date_and_time_t::day, and date_and_time_t::month.
Referenced by which_year_month_day().
static void which_year_month_day | ( | date_and_time_t * | mydate, | |
guint32 | days, | |||
guint32 | base_year, | |||
guint | base_month, | |||
guint8 | base_day | |||
) | [static] |
About date calculation : Leap years are periods of 4 years except the years that we can divide by 100 and not 400.
So we can distinguish 2 periods : one of 400 years and one of 4 years.
[out] | mydate | : Filled date structure |
days | : number of days calculated | |
base_year | : base year used for calculation (eg 1601 for filetime) | |
base_month | : base month used for calculation (eg 01, january for filetime) | |
base_day | : base day used for calculation (eg 01 for filetime) |
Definition at line 411 of file decode.c.
References bissextile_year(), remove_days_from_first_january(), which_month_day(), and date_and_time_t::year.
Referenced by make_date_and_time().