BOOL net_sms_handle_paramsq(char *caller, char *command, char *arguments)
{
    unsigned char k, splen, msglen;
    char *p, *s;

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

    net_send_sms_start(caller);
    net_puts_rom("Params:");
    msglen=7;
    for (k=0; k<PARAM_MAX; k++)
    {
        p = par_get(k);
        if (*p != 0)
        {
            s = stp_i(net_scratchpad, "\n", k);
            s = stp_s(s, ":", p);
            splen = s - net_scratchpad;
            if((msglen+splen) > 160)
            {
                // SMS becomes too long, finish & start next:
                net_send_sms_finish();
                delay100(20);
                net_send_sms_start(caller);
                net_puts_rom("Params:");
                msglen=7+splen;
            }
            net_puts_ram(net_scratchpad);
        }
    }
    return TRUE;
}
BOOL net_sms_handle_gprsq(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, "GPRS:");
    s = stp_s(s, "\r\n APN:", par_get(PARAM_GPRSAPN));
    s = stp_s(s, "\r\n User:"******"\r\n Password:"******"\r\n GSM:", car_gsmcops);

    if (!inputs_gsmgprs())
        s = stp_rom(s, "\r\n GPRS: DISABLED");
    else if (net_msg_serverok)
        s = stp_rom(s, "\r\n GPRS: OK\r\n Server: Connected OK");
    else if (net_state == NET_STATE_READY)
        s = stp_rom(s, "\r\n GSM: OK\r\n Server: Not connected");
    else
    {
        s = stp_x(s, "\r\n GSM/GPRS: Not connected (0x", net_state);
        s = stp_rom(s, ")");
    }

    net_puts_ram(net_scratchpad);

    return TRUE;
}
BOOL net_sms_handle_gsmlockq(char *caller, char *command, char *arguments)
{
    char *p;

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

    net_send_sms_start(caller);
    net_puts_rom("GSMLOCK: ");

    p = par_get(PARAM_GSMLOCK);
    if (*p == 0)
    {
        net_puts_rom("(none)\r\n");
    }
    else
    {
        net_puts_ram(p);
        net_puts_rom("\r\n");
    }

    stp_s(net_scratchpad, "Current: ", car_gsmcops);
    net_puts_ram(net_scratchpad);

    return TRUE;
}
void net_send_sms_ram(char* number, const char* message)
{
    if (sys_features[FEATURE_CARBITS]&FEATURE_CB_SOUT_SMS) return;

    net_send_sms_start(number);
    net_puts_ram(message);
    net_send_sms_finish();
}
BOOL net_sms_handle_homelink(char *caller, char *command, char *arguments)
{
    if (vehicle_fn_commandhandler != NULL)
        vehicle_fn_commandhandler(FALSE, 24, arguments);
    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_HOMELINK);
    return TRUE;
}
BOOL net_sms_handle_lock(char *caller, char *command, char *arguments)
{
    if (vehicle_fn_commandhandler != NULL)
        vehicle_fn_commandhandler(FALSE, 20, arguments);
    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_LOCK);
    return TRUE;
}
BOOL net_sms_handle_unvalet(char *caller, char *command, char *arguments)
{
    if (vehicle_fn_commandhandler != NULL)
        vehicle_fn_commandhandler(FALSE, 23, arguments);
    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_UNVALET);
    return TRUE;
}
BOOL net_sms_handle_cooldown(char *caller, char *command, char *arguments)
  {
  if (vehicle_fn_commandhandler != NULL)
    vehicle_fn_commandhandler(FALSE, 25, NULL);
  net_send_sms_start(caller);
  net_puts_rom(NET_MSG_COOLDOWN);
  return TRUE;
  }
BOOL net_sms_handle_chargestop(char *caller, char *command, char *arguments)
  {
  if (vehicle_fn_commandhandler != NULL)
    vehicle_fn_commandhandler(FALSE, 12, NULL);
  net_notify_suppresscount = 30; // Suppress notifications for 30 seconds
  net_send_sms_start(caller);
  net_puts_rom(NET_MSG_CHARGESTOP);
  return TRUE;
  }
void net_send_sms_rom(char* number, static const rom char* message)
  {
#ifdef OVMS_SUPPRESS_OUTGOING_SMS
  return;
#endif
  net_send_sms_start(number);
  net_puts_rom(message);
  net_puts_rom("\x1a");
  }
BOOL net_sms_handle_pass(char *caller, char *command, char *arguments)
{
    // Password may not be empty:
    if (*arguments == 0)
    {
        net_send_sms_start(caller);
        net_puts_rom(NET_MSG_INVALID);
        return TRUE;
    }

    par_set(PARAM_MODULEPASS, arguments);

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

    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_PASSWORD);
    return TRUE;
}
BOOL net_sms_handle_chargestart(char *caller, char *command, char *arguments)
  {
  if (vehicle_fn_commandhandler != NULL)
    vehicle_fn_commandhandler(FALSE, 11, NULL);
  net_notify_suppresscount = 0; // Enable notifications
  net_send_sms_start(caller);
  net_puts_rom(NET_MSG_CHARGESTART);
  return TRUE;
  }
BOOL net_sms_handle_register(char *caller, char *command, char *arguments)
{
    par_set(PARAM_REGPHONE, caller);

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

    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_REGISTERED);
    return TRUE;
}
void net_sms_alarm(char* number)
{
    char *p;

    if (sys_features[FEATURE_CARBITS]&FEATURE_CB_SOUT_SMS) return;

    delay100(2);
    net_send_sms_start(number);
    net_puts_rom(NET_MSG_ALARM);
    net_send_sms_finish();
}
void net_sms_valettrunk(char* number)
{
    char *p;

    if (sys_features[FEATURE_CARBITS]&FEATURE_CB_SOUT_SMS) return;

    delay100(2);
    net_send_sms_start(number);
    net_puts_rom(NET_MSG_VALETTRUNK);
    net_send_sms_finish();
}
BOOL net_sms_handle_cooldown(char *caller, char *command, char *arguments)
{
    if (vehicle_fn_commandhandler != NULL)
        vehicle_fn_commandhandler(FALSE, 25, NULL);
    net_send_sms_start(caller);
    net_puts_rom(NET_MSG_COOLDOWN);
#ifdef OVMS_ACCMODULE
    acc_handle_msg(FALSE, 25, NULL);
#endif
    return TRUE;
}
BOOL net_sms_handle_passq(char *caller, char *command, char *arguments)
{
    char *p = par_get(PARAM_MODULEPASS);

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

    net_send_sms_start(caller);
    stp_s(net_scratchpad, "Module password: ", p);
    net_puts_ram(net_scratchpad);
    return TRUE;
}
BOOL net_sms_handle_registerq(char *caller, char *command, char *arguments)
{
    char *p = par_get(PARAM_REGPHONE);

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

    net_send_sms_start(caller);
    stp_s(net_scratchpad, "Registered number: ", p);
    net_puts_ram(net_scratchpad);
    return TRUE;
}
void net_sms_gps(char* number)
  {
  delay100(2);
  net_send_sms_start(number);
  net_puts_rom(NET_MSG_GOOGLEMAPS);
  format_latlon(car_latitude,net_scratchpad);
  net_puts_ram(net_scratchpad);
  net_puts_rom(",");
  format_latlon(car_longitude,net_scratchpad);
  net_puts_ram(net_scratchpad);
  net_puts_rom("\x1a");
  }
void net_sms_stat(char* number)
  {
  char *p;

#ifdef OVMS_SUPPRESS_OUTGOING_SMS
  return;
#endif

  delay100(2);
  net_send_sms_start(number);

  switch (car_chargemode)
    {
    case 0x00:
      net_puts_rom("Standard - "); // Charge Mode Standard
      break;
    case 0x01:
      net_puts_rom("Storage - "); // Storage
      break;
    case 0x03:
      net_puts_rom("Range - "); // Range
      break;
    case 0x04:
      net_puts_rom("Performance - "); // Performance
    }
  switch (car_chargestate)
    {
    case 0x01:
      net_puts_rom("Charging"); // Charge State Charging
      break;
    case 0x02:
      net_puts_rom("Charging, Topping off"); // Topping off
      break;
    case 0x04:
      net_puts_rom("Charging Done"); // Done
      break;
    default:
      net_puts_rom("Charging Stopped"); // Stopped
    }

  net_puts_rom(" \rIdeal Range: "); // Ideal Range
  p = par_get(PARAM_MILESKM);
  if (*p == 'M') // Kmh or Miles
    sprintf(net_scratchpad, (rom far char*)"%u mi", car_idealrange); // Miles
  else
    sprintf(net_scratchpad, (rom far char*)"%u Km", (unsigned int) (((float) car_idealrange * 1.609))+0.5); // Kmh
  net_puts_ram(net_scratchpad);

  net_puts_rom(" \rSOC: ");
  sprintf(net_scratchpad, (rom far char*)"%u%%", car_SOC); // 95%
  net_puts_ram(net_scratchpad);
  net_puts_rom("\x1a");
  }
Beispiel #21
0
BOOL net_sms_stat(char* number)
  {
  if (sys_features[FEATURE_CARBITS]&FEATURE_CB_SOUT_SMS) return FALSE;

  delay100(2);
  net_send_sms_start(number);
  
  net_prep_stat(net_scratchpad);
  cr2lf(net_scratchpad);
  net_puts_ram(net_scratchpad);

  return TRUE;
  }
Beispiel #22
0
void net_sms_alert(char* number, alert_type alert)
  {
  if (sys_features[FEATURE_CARBITS]&(FEATURE_CB_SOUT_SMS|FEATURE_CB_SVALERTS))
    return;

  delay100(2);
  net_send_sms_start(number);
  
  net_prep_alert(net_scratchpad, alert);
  cr2lf(net_scratchpad);
  
  net_puts_ram(net_scratchpad);
  net_send_sms_finish();
  }
void net_sms_socalert(char* number)
{
    char *s;

    delay100(10);
    net_send_sms_start(number);

    s = stp_i(net_scratchpad, "ALERT!!! CRITICAL SOC LEVEL APPROACHED (", car_SOC); // 95%
    s = stp_rom(s, "% SOC)");
    net_puts_ram(net_scratchpad);

    net_send_sms_finish();
    delay100(5);
}
Beispiel #24
0
BOOL net_sms_handle_vehicleq(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, "Vehicle:");
  s = stp_vehicletype(s);

  net_puts_ram(net_scratchpad);

  return TRUE;
  }
void net_sms_params(char* number)
  {
  unsigned char k;
  char *p;

  net_send_sms_start(number);
  net_puts_rom("Params:");
  for (k=0;k<PARAM_MAX;k++)
    {
    sprintf(net_scratchpad, (rom far char*)" %u:", k);
    net_puts_ram(net_scratchpad);
    net_puts_ram(par_get(k));
    }
  net_puts_rom("\x1a");
  }
BOOL net_sms_handle_vehicleq(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, "Vehicle:");
    s = stp_s(s, "\r\n VehicleType: ", par_get(PARAM_VEHICLETYPE));

    net_puts_ram(net_scratchpad);

    return TRUE;
}
BOOL net_sms_handle_help(char *caller, char *command, char *arguments)
{
    int k;

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

    net_send_sms_start(caller);
    net_puts_rom("Commands:");
    for (k=0; sms_cmdtable[k][0] != 0; k++)
    {
        net_puts_rom(" ");
        net_puts_rom(sms_cmdtable[k]+1);
    }
    return TRUE;
}
BOOL net_sms_ctp(char* number, char *arguments)
{
    char *p;

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

    delay100(2);
    net_send_sms_start(number);

    net_prep_ctp(net_scratchpad, arguments);
    cr2lf(net_scratchpad);
    net_puts_ram(net_scratchpad);

    return TRUE;
}
Beispiel #29
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;
}
BOOL net_sms_handle_temps(char *caller, char *command, char *arguments)
{
    char *s;

    s = stp_i(net_scratchpad, "Temperatures:\r\n  Ambient: ", car_ambient_temp);
    s = stp_i(s, "C\r\n  PEM: ", car_tpem);
    s = stp_i(s, "C\r\n  Motor: ", car_tmotor);
    s = stp_i(s, "C\r\n  Battery: ", car_tbattery);
    s = stp_rom(s, "C");
    if ((car_stale_ambient==0)||(car_stale_temps==0))
        s = stp_rom(s, "\r\n  (stale)");

    net_send_sms_start(caller);
    net_puts_ram(net_scratchpad);
    return TRUE;
}