void net_send_sms_start(char* number) { if (net_state == NET_STATE_DIAGMODE) { // DIAG mode: screen output net_puts_rom("# "); } else if (net_msg_bufpos) { // NET SMS wrapper mode: nothing to do here // net_put* will write to net_msg_bufpos } else { // MODEM mode: net_puts_rom("AT+CMGS=\""); net_puts_ram(number); net_puts_rom("\"\r\n"); delay100(2); } if ((car_time > 315360000)&& ((sys_features[FEATURE_CARBITS]&FEATURE_CB_SSMSTIME)==0)) { // Car time is valid, and sms time is not disabled char *p = par_get(PARAM_TIMEZONE); char *s = stp_time(net_scratchpad, NULL, car_time + timestring_to_mins(p)*60L); s = stp_rom(s, "\r "); net_puts_ram(net_scratchpad); } }
void net_send_sms_start(char* number) { if (net_msg_bufpos) { // NET SMS wrapper mode: nothing to do here // net_put* will write to net_msg_bufpos } #ifdef OVMS_DIAGMODULE else if (net_state == NET_STATE_DIAGMODE) { // DIAG mode: screen output net_msg_sendpending = 1; net_puts_rom("# "); } #endif // OVMS_DIAGMODULE else { // MODEM mode: net_puts_rom("AT+CMGS=\""); net_puts_ram(number); net_puts_rom("\"\r\n"); delay100(2); } // ATT: the following code tries to prepend the current time to ALL // outbound SMS. It relies on a) all SMS leaving enough space // to add "HH:MM:SS\r " = 10 chars and b) ALL SMS senders to // call net_send_sms_start() BEFORE preparing the message in // net_scratchpad -- otherwise the prepd message is lost. #ifndef OVMS_NO_SMSTIME if ((car_time > 315360000)&& ((sys_features[FEATURE_CARBITS]&FEATURE_CB_SSMSTIME)==0)) { // Car time is valid, and sms time is not disabled char *p = par_get(PARAM_TIMEZONE); char *s = stp_time(net_scratchpad, NULL, car_time + timestring_to_mins(p)*60L); s = stp_rom(s, "\r "); net_puts_ram(net_scratchpad); } #endif //OVMS_NO_SMSTIME }
char *net_prep_stat(char *s) { // convert distance values as needed unsigned int estrange = car_estrange; unsigned int idealrange = car_idealrange; unsigned long odometer = car_odometer; const rom char *unit = " mi"; if (can_mileskm == 'K') { estrange = KmFromMi(estrange); idealrange = KmFromMi(idealrange); odometer = KmFromMi(odometer); unit = " km"; } if (car_time != 0) { char *p = par_get(PARAM_TIMEZONE); s = stp_time(s, NULL, car_time + timestring_to_mins(p)*60L); s = stp_rom(s, "\r "); } if (car_coolingdown>=0) { s = stp_i(s, "Cooldown: ", car_tbattery); s = stp_i(s, "C/",car_cooldown_tbattery); s = stp_i(s, "C (",car_coolingdown); s = stp_i(s, "cycles, ",car_cooldown_timelimit); s = stp_rom(s, "mins remain)"); } if (car_doors1bits.ChargePort) { char fShowVA = TRUE; // Charge port door is open, we are charging switch (car_chargemode) { case 0x00: s = stp_rom(s, "Standard - "); // Charge Mode Standard break; case 0x01: s = stp_rom(s, "Storage - "); // Storage break; case 0x03: s = stp_rom(s, "Range - "); // Range break; case 0x04: s = stp_rom(s, "Performance - "); // Performance } switch (car_chargestate) { case 0x01: s = stp_rom(s, "Charging"); // Charge State Charging break; case 0x02: s = stp_rom(s, "Charging, Topping off"); // Topping off break; case 0x04: s = stp_rom(s, "Charging Done"); // Done fShowVA = FALSE; break; case 0x0d: s = stp_rom(s, "Preparing"); // Preparing break; case 0x0f: s = stp_rom(s, "Charging, Heating"); // Heating break; default: s = stp_rom(s, "Charging Stopped"); // Stopped fShowVA = FALSE; break; } // this causes ACC to think the charge port door has been closed and opened, // which then causes it to do something that makes the coolant pump come on // car_doors1bits.ChargePort = 0; // MJ Close ChargePort, will open next CAN Reading if (fShowVA) { s = stp_i(s, "\r ", car_linevoltage); s = stp_i(s, "V/", car_chargecurrent); s = stp_rom(s, "A"); if (car_chargefull_minsremaining >= 0) { s = stp_i(s,"\r Full: ",car_chargefull_minsremaining); s = stp_rom(s," mins"); } if (car_chargelimit_soclimit > 0) { s = stp_i(s, "\r ", car_chargelimit_soclimit); s = stp_i(s,"%: ",car_chargelimit_minsremaining); s = stp_rom(s," mins"); } if (car_chargelimit_rangelimit > 0) { s = stp_i(s, "\r ", (can_mileskm == 'K')?KmFromMi(car_chargelimit_rangelimit):car_chargelimit_rangelimit); s = stp_rom(s, unit); s = stp_i(s,": ",car_chargelimit_minsremaining); s = stp_rom(s," mins"); } } } else { s = stp_rom(s, "Not charging"); } s = stp_i(s, "\r SOC: ", car_SOC); s = stp_rom(s, "%"); if (idealrange != 0) { s = stp_i(s, "\r Ideal Range: ", idealrange); s = stp_rom(s, unit); } if (estrange != 0) { s = stp_i(s, "\r Est. Range: ", estrange); s = stp_rom(s, unit); } if (odometer != 0) { s = stp_l2f_h(s, "\r ODO: ", odometer, 1); s = stp_rom(s, unit); } if (car_cac100 != 0) { s = stp_l2f_h(s, "\r CAC: ", (unsigned long)car_cac100, 2); } return s; }