FreeCalypso > hg > fc-tourmaline
view helpers/build-date.c @ 244:96784b8974eb
Switch_ON(): detect charging mode by CHGPRES bit
Consider the following scenario: the phone is on, the user plugs in
the charger, and then executes the power-off operation. In the Iota
VRPC this sequence translates to a switch-off immediately followed
by another switch-on - but the CHGSTS bit doesn't get set on the second
switch-on cycle! Disassembly of Pirelli's fw shows that they check
the CHGPRES bit, and furthermore, if both CHGPRES and ONBSTS are set,
the code they pass to their modified Power_ON_Button() function is
the one for charging - so let's adopt the same CHGPRES check and
the same priority order for switch-on causes.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 03 May 2021 06:51:29 +0000 |
parents | 775dba605f33 |
children |
line wrap: on
line source
/* * This program runs at firmware build time to produce a C file for the * fw build that includes the build date and time stamp. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <time.h> main(argc, argv) char **argv; { time_t now; struct tm *tm; if (argc < 2 || argc > 4) { fprintf(stderr, "usage: %s config_name target_name src_version\n", argv[0]); exit(1); } time(&now); tm = gmtime(&now); printf("const char firmware_version_str[] =\n"); if (argc >= 3) printf("\"FreeCalypso Tourmaline %s (%s), ", argv[1], argv[2]); else printf("\"FreeCalypso Tourmaline %s, ", argv[1]); if (argc >= 4 && strcmp(argv[3], "unknown")) printf("source version %s, ", argv[3]); printf("build date %d-%02d-%02dT%02d:%02d:%02dZ\";\n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); exit(0); }