X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fgsm-datetime.c;fp=common%2Fgsm-datetime.c;h=589dcb3e9d1526ab2846eba039cfc3f25c4ac346;hp=0000000000000000000000000000000000000000;hb=2e0972b02d101bb0d8e9d3e15d2ac80def491a63;hpb=cc37b87508c91b5d4f21fd4bbc298104ae7de1dc diff --git a/common/gsm-datetime.c b/common/gsm-datetime.c new file mode 100644 index 0000000..589dcb3 --- /dev/null +++ b/common/gsm-datetime.c @@ -0,0 +1,88 @@ +/* + + G N O K I I + + A Linux/Unix toolset and driver for Nokia mobile phones. + + Released under the terms of the GNU GPL, see file COPYING for more details. + +*/ + +#include +#include + +#include "misc.h" +#include "gsm-datetime.h" +#include "gsm-common.h" + +char DayOfWeekChar; + +/* Based on article in Polish PC-Kurier 8/1998 page 104 */ +/* Archive on http://www.pckurier.pl */ +char *DayOfWeek (int year, int month, int day) { + int p,q,r,w; + + p=(14-month) / 12; + q=month+12*p-2; + r=year-p; + w=(day+(31*q) / 12 + r + r / 4 - r / 100 + r / 400) % 7; + strcpy(&DayOfWeekChar,""); + switch (w) { + case 0: strcpy(&DayOfWeekChar,"Sun"); break; + case 1: strcpy(&DayOfWeekChar,"Mon"); break; + case 2: strcpy(&DayOfWeekChar,"Tue"); break; + case 3: strcpy(&DayOfWeekChar,"Wed"); break; + case 4: strcpy(&DayOfWeekChar,"Thu"); break; + case 5: strcpy(&DayOfWeekChar,"Fri"); break; + case 6: strcpy(&DayOfWeekChar,"Sat"); break; + } + return &DayOfWeekChar; +} + +/* GetMachineDateTime ---------------------------------------------------------- +Purpose: Gets system date and time. +Use: - +Input: - +Output: date - System date in the format "aaaa-mm-gg". + time - System time in the format "hh:mm:ss". +Return: - +----------------------------------------------------------------------------- */ +void GetMachineDateTime( char nowdate[], char nowtime[] ) +{ + struct tm *now; + time_t nowh; + + nowh=time(NULL); + now=localtime(&nowh); + + /* I have 100 (for 2000) Year now :-) */ + if (now->tm_year>99 && now->tm_year<1900) { + now->tm_year=now->tm_year+1900; + } + + sprintf(nowdate,"%04d-%02d-%02d",now->tm_year,now->tm_mon+1,now->tm_mday); + sprintf(nowtime, "%02d:%02d:%02d",now->tm_hour,now->tm_min,now->tm_sec); + +} + +void EncodeDateTime(unsigned char* buffer, GSM_DateTime *datetime) +{ + buffer[0] = datetime->Year / 256; + buffer[1] = datetime->Year % 256; + buffer[2] = datetime->Month; + buffer[3] = datetime->Day; + + buffer[4] = datetime->Hour; + buffer[5] = datetime->Minute; +} + +void DecodeDateTime(unsigned char* buffer, GSM_DateTime *datetime) +{ + datetime->Year = buffer[0] * 256 + buffer[1]; + datetime->Month = buffer[2]; + datetime->Day = buffer[3]; + + datetime->Hour = buffer[4]; + datetime->Minute = buffer[5]; + datetime->Second = buffer[6]; +}