char net_msgp_environment(char stat)
{
  char *s;
  unsigned long park;

  if (car_parktime == 0)
    park = 0;
  else
    park = car_time - car_parktime;

  s = stp_i(net_scratchpad, "MP-0 D", car_doors1);
  s = stp_i(s, ",", car_doors2);
  s = stp_i(s, ",", car_lockstate);
  s = stp_i(s, ",", car_tpem);
  s = stp_i(s, ",", car_tmotor);
  s = stp_i(s, ",", car_tbattery);
  s = stp_i(s, ",", car_trip);
  s = stp_ul(s, ",", car_odometer);
  s = stp_i(s, ",", car_speed);
  s = stp_ul(s, ",", park);
  s = stp_i(s, ",", car_ambient_temp);
  s = stp_i(s, ",", car_doors3);
  s = stp_i(s, ",", car_stale_temps);
  s = stp_i(s, ",", car_stale_ambient);
  s = stp_l2f(s, ",", car_12vline, 1);
  s = stp_i(s, ",", car_doors4);
  s = stp_l2f(s, ",", car_12vline_ref, 1);
  s = stp_i(s, ",", car_doors5);

  return net_msg_encode_statputs(stat, &crc_environment);
}
void net_msg_12v_alert(void)
  {
  char *s;

  s = stp_l2f(net_scratchpad, "MP-0 PAALERT!!! 12V BATTERY CRITICAL (", car_12vline, 1);
  s = stp_l2f(s, "V, ref=", car_12vline_ref, 1);
  s = stp_rom(s, "V)");
  net_msg_encode_puts();
  }
void net_msg_12v_alert(void)
  {
  char *s;

  delay100(2);
  net_msg_start();
  if (can_minSOCnotified & CAN_MINSOC_ALERT_12V)
    s = stp_l2f(net_scratchpad, "MP-0 PAALERT!!! 12V BATTERY CRITICAL (", car_12vline, 1);
  else
    s = stp_l2f(net_scratchpad, "MP-0 PA12V BATTERY OK (", car_12vline, 1);
  s = stp_l2f(s, "V, ref=", car_12vline_ref, 1);
  s = stp_rom(s, "V)");
  net_msg_encode_puts();
  net_msg_send();
  }
Example #4
0
BOOL net_sms_handle_diag(char *caller, char *command, char *arguments)
{
  char *s;

  if (sys_features[FEATURE_CARBITS] & FEATURE_CB_SOUT_SMS) return FALSE;

  net_send_sms_start(caller);

  s = stp_rom(net_scratchpad, "DIAG:");
  s = stp_i(s, "\n RED Led:", led_code[OVMS_LED_RED]);
  s = stp_i(s, "\n GRN Led:", led_code[OVMS_LED_GRN]);
  s = stp_x(s, "\n NET State:0x", net_state);

  if (car_12vline > 0)
  {
    s = stp_l2f(s, "\n 12V Line:", car_12vline, 1);
    s = stp_l2f(s, " ref=", car_12vline_ref, 1);
  }

#ifndef OVMS_NO_CRASHDEBUG
  /* DEBUG / QA stats: output crash counter and decode last reason:
   */
  s = stp_i(s, "\n Crashes:", debug_crashcnt);
  if (debug_crashreason)
  {
    s = stp_rom(s, "\n ..last:");
    if (debug_crashreason & 0x01)
      s = stp_rom(s, " BOR"); // Brown Out Reset
    if (debug_crashreason & 0x02)
      s = stp_rom(s, " POR"); // Power On Reset
    if (debug_crashreason & 0x04)
      s = stp_rom(s, " PD"); // Power-Down Detection
    if (debug_crashreason & 0x08)
      s = stp_rom(s, " TO"); // Watchdog Timeout
    if (debug_crashreason & 0x10)
      s = stp_rom(s, " RI"); // Reset Instruction
    if (debug_crashreason & 0x20)
      s = stp_rom(s, " STKFUL"); // Stack overflow
    if (debug_crashreason & 0x40)
      s = stp_rom(s, " STKUNF"); // Stack underflow
    s = stp_i(s, " - ", debug_checkpoint);
  }
#endif // OVMS_NO_CRASHDEBUG

  net_puts_ram(net_scratchpad);

  return TRUE;
}
char net_msgp_tpms(char stat)
{
  char k, *s;
  long p;

#if 0
  if ((car_tpms_t[0] == 0) && (car_tpms_t[1] == 0) &&
          (car_tpms_t[2] == 0) && (car_tpms_t[3] == 0))
    return stat; // No TPMS, no report
  // ...new stat fn: No TMPS = one report with stale=-1
#endif

  s = stp_rom(net_scratchpad, "MP-0 W");
  for (k = 0; k < 4; k++)
  {
    if (car_tpms_t[k] > 0)
    {
      p = (long) ((float) car_tpms_p[k] / 0.2755);
      s = stp_l2f(s, NULL, p, 1);
      s = stp_i(s, ",", car_tpms_t[k] - 40);
      s = stp_rom(s, ",");
    }
    else
    {
      s = stp_rom(s, "0,0,");
    }
  }
  s = stp_i(s, NULL, car_stale_tpms);

  return net_msg_encode_statputs(stat, &crc_tpms);
}
void net_sms_12v_alert(char* number)
{
    char *s;

    delay100(10);
    net_send_sms_start(number);

    if (can_minSOCnotified & CAN_MINSOC_ALERT_12V)
        s = stp_l2f(net_scratchpad, "MP-0 PAALERT!!! 12V BATTERY CRITICAL (", car_12vline, 1);
    else
        s = stp_l2f(net_scratchpad, "MP-0 PA12V BATTERY OK (", car_12vline, 1);
    s = stp_l2f(s, "V, ref=", car_12vline_ref, 1);
    s = stp_rom(s, "V)");
    net_puts_ram(net_scratchpad);

    net_send_sms_finish();
    delay100(5);
}
char net_msgp_stat(char stat)
{
  char *p, *s;

  p = par_get(PARAM_MILESKM);

  s = stp_i(net_scratchpad, "MP-0 S", car_SOC);
  s = stp_s(s, ",", p);
  s = stp_i(s, ",", car_linevoltage);
  s = stp_i(s, ",", car_chargecurrent);

  switch (car_chargestate)
  {
  case 0x01:
    s = stp_rom(s, ",charging");
    break;
  case 0x02:
    s = stp_rom(s, ",topoff");
    break;
  case 0x04:
    s = stp_rom(s, ",done");
    break;
  case 0x0d:
    s = stp_rom(s, ",prepare");
    break;
  case 0x0f:
    s = stp_rom(s, ",heating");
    break;
  default:
    s = stp_rom(s, ",stopped");
  }

  switch (car_chargemode)
  {
  case 0x00:
    s = stp_rom(s, ",standard");
    break;
  case 0x01:
    s = stp_rom(s, ",storage");
    break;
  case 0x03:
    s = stp_rom(s, ",range");
    break;
  case 0x04:
    s = stp_rom(s, ",performance");
    break;
  default:
    s = stp_rom(s, ",");
  }

  if (*p == 'M') // Kmh or Miles
  {
    s = stp_i(s, ",", car_idealrange);
    s = stp_i(s, ",", car_estrange);
  }
  else
  {
    s = stp_i(s, ",", KmFromMi(car_idealrange));
    s = stp_i(s, ",", KmFromMi(car_estrange));
  }

  s = stp_i(s, ",", car_chargelimit);
  s = stp_i(s, ",", car_chargeduration);
  s = stp_i(s, ",", car_charge_b4);
  s = stp_i(s, ",", car_chargekwh);
  s = stp_i(s, ",", car_chargesubstate);
  s = stp_i(s, ",", car_chargestate);
  s = stp_i(s, ",", car_chargemode);
  s = stp_i(s, ",", car_timermode);
  s = stp_i(s, ",", car_timerstart);
  s = stp_i(s, ",", car_stale_timer);
  s = stp_l2f(s, ",", (unsigned long)car_cac100, 2);
  s = stp_i(s, ",", car_chargefull_minsremaining);
  s = stp_i(s, ",", car_chargelimit_minsremaining);
  s = stp_i(s, ",", car_chargelimit_rangelimit);
  s = stp_i(s, ",", car_chargelimit_soclimit);
  s = stp_i(s, ",", car_coolingdown);
  s = stp_i(s, ",", car_cooldown_tbattery);
  s = stp_i(s, ",", car_cooldown_timelimit);
  s = stp_i(s, ",", car_chargeestimate);

  return net_msg_encode_statputs(stat, &crc_stat);
}