remove modem logging (#21497)
	
		
	
				
					
				
			
							parent
							
								
									f40e75edf8
								
							
						
					
					
						commit
						a6efe9a6b7
					
				
				 5 changed files with 0 additions and 236 deletions
			
			
		@ -1,5 +0,0 @@ | 
				
			|||||||
Import('env', 'common') | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
lenv = env.Clone() | 
					 | 
				
			||||||
lenv["CCFLAGS"] = [f for f in env["CCFLAGS"] if f != "-Wunused"] | 
					 | 
				
			||||||
lenv.Program('rat', ['rat.cc'], LIBS=[common, 'diag', 'time_genoff', 'zmq']) | 
					 | 
				
			||||||
@ -1,33 +0,0 @@ | 
				
			|||||||
#pragma once | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdint.h> | 
					 | 
				
			||||||
#include <stdbool.h> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern "C" { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_MAX_RX_PKT_SIZ 4096 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool Diag_LSM_Init(uint8_t* pIEnv); | 
					 | 
				
			||||||
bool Diag_LSM_DeInit(void); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DCI
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_CON_APSS 0x001 | 
					 | 
				
			||||||
#define DIAG_CON_MPSS 0x002 | 
					 | 
				
			||||||
#define DIAG_CON_LPASS 0x004 | 
					 | 
				
			||||||
#define DIAG_CON_WCNSS 0x008 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum { | 
					 | 
				
			||||||
  DIAG_DCI_NO_ERROR = 1001, | 
					 | 
				
			||||||
} diag_dci_error_type; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int diag_register_dci_client(int*, uint16_t*, int, void*); | 
					 | 
				
			||||||
int diag_log_stream_config(int client_id, int set_mask, uint16_t log_codes_array[], int num_codes); | 
					 | 
				
			||||||
int diag_register_dci_stream(void (*func_ptr_logs)(unsigned char *ptr, int len), void (*func_ptr_events)(unsigned char *ptr, int len)); | 
					 | 
				
			||||||
int diag_release_dci_client(int*); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int diag_send_dci_async_req(int client_id, unsigned char buf[], int bytes, unsigned char *rsp_ptr, int rsp_len, | 
					 | 
				
			||||||
                            void (*func_ptr)(unsigned char *ptr, int len, void *data_ptr), void *data_ptr); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,183 +0,0 @@ | 
				
			|||||||
#include <semaphore.h> | 
					 | 
				
			||||||
#include <cassert> | 
					 | 
				
			||||||
#include <cstdio> | 
					 | 
				
			||||||
#include <cstdlib> | 
					 | 
				
			||||||
#include <map> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "json11.hpp" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "libdiag.h" | 
					 | 
				
			||||||
#include "selfdrive/common/swaglog.h" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_NV_READ_F 38 | 
					 | 
				
			||||||
#define DIAG_NV_WRITE_F 39 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_SUBSYS_CMD 75 | 
					 | 
				
			||||||
#define DIAG_SUBSYS_CMD_VER_2 128 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_SUBSYS_FS 19 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define EFS2_DIAG_SYNC_NO_WAIT 48 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct __attribute__((packed)) NvPacket { | 
					 | 
				
			||||||
  uint8_t cmd_code; | 
					 | 
				
			||||||
  uint16_t nv_id; | 
					 | 
				
			||||||
  uint8_t data[128]; | 
					 | 
				
			||||||
  uint16_t status; | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum NvStatus { | 
					 | 
				
			||||||
  NV_DONE, | 
					 | 
				
			||||||
  NV_BUSY, | 
					 | 
				
			||||||
  NV_FULL, | 
					 | 
				
			||||||
  NV_FAIL, | 
					 | 
				
			||||||
  NV_NOTACTIVE, | 
					 | 
				
			||||||
  NV_BADPARAM, | 
					 | 
				
			||||||
  NV_READONLY, | 
					 | 
				
			||||||
  NV_BADRG, | 
					 | 
				
			||||||
  NV_NOMEM, | 
					 | 
				
			||||||
  NV_NOTALLOC, | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct __attribute__((packed)) Efs2DiagSyncReq { | 
					 | 
				
			||||||
  uint8_t cmd_code; | 
					 | 
				
			||||||
  uint8_t subsys_id; | 
					 | 
				
			||||||
  uint16_t subsys_cmd_code; | 
					 | 
				
			||||||
  uint16_t sequence_num; | 
					 | 
				
			||||||
  char path[8]; | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct __attribute__((packed)) Efs2DiagSyncResp { | 
					 | 
				
			||||||
  uint8_t cmd_code; | 
					 | 
				
			||||||
  uint8_t subsys_id; | 
					 | 
				
			||||||
  uint16_t subsys_cmd_code; | 
					 | 
				
			||||||
  uint16_t sequence_num; | 
					 | 
				
			||||||
  uint32_t sync_token; | 
					 | 
				
			||||||
  int32_t diag_errno; | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct SendDiagSyncState { | 
					 | 
				
			||||||
  sem_t sem; | 
					 | 
				
			||||||
  int len; | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void diag_send_sync_cb(unsigned char *ptr, int len, void *data_ptr) { | 
					 | 
				
			||||||
  SendDiagSyncState *s = (SendDiagSyncState*)data_ptr; | 
					 | 
				
			||||||
  s->len = len; | 
					 | 
				
			||||||
  sem_post(&s->sem); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int diag_send_sync(int client_id, unsigned char* req_pkt, size_t pkt_len, | 
					 | 
				
			||||||
                           unsigned char* res_pkt, size_t res_pkt_size) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  SendDiagSyncState s = {0}; | 
					 | 
				
			||||||
  sem_init(&s.sem, 0, 0); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  int err = diag_send_dci_async_req(client_id, req_pkt, pkt_len, res_pkt, res_pkt_size, | 
					 | 
				
			||||||
                                    diag_send_sync_cb, &s); | 
					 | 
				
			||||||
  assert(err == DIAG_DCI_NO_ERROR); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  sem_wait(&s.sem); | 
					 | 
				
			||||||
  return s.len; | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void efs_sync(int client_id) { | 
					 | 
				
			||||||
  unsigned char res_pkt[DIAG_MAX_RX_PKT_SIZ]; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Efs2DiagSyncReq req_pkt = { | 
					 | 
				
			||||||
    .cmd_code = DIAG_SUBSYS_CMD, | 
					 | 
				
			||||||
    .subsys_id = DIAG_SUBSYS_FS, | 
					 | 
				
			||||||
    .subsys_cmd_code = EFS2_DIAG_SYNC_NO_WAIT, | 
					 | 
				
			||||||
    .sequence_num = (uint16_t)(rand() % 100), | 
					 | 
				
			||||||
  }; | 
					 | 
				
			||||||
  req_pkt.path[0] = '/'; | 
					 | 
				
			||||||
  req_pkt.path[1] = 0; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  int res_len = diag_send_sync(client_id, (unsigned char*)&req_pkt, sizeof(req_pkt), | 
					 | 
				
			||||||
                                res_pkt, sizeof(res_pkt)); | 
					 | 
				
			||||||
  Efs2DiagSyncResp *resp = (Efs2DiagSyncResp*)res_pkt; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (res_len != sizeof(Efs2DiagSyncResp) | 
					 | 
				
			||||||
      || resp->cmd_code != DIAG_SUBSYS_CMD | 
					 | 
				
			||||||
      || resp->subsys_id != DIAG_SUBSYS_FS | 
					 | 
				
			||||||
      || resp->subsys_cmd_code != EFS2_DIAG_SYNC_NO_WAIT) { | 
					 | 
				
			||||||
    LOGW("efs_sync: bad response!"); | 
					 | 
				
			||||||
    return; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
  if (resp->diag_errno != 0) { | 
					 | 
				
			||||||
    LOGW("efs_sync: error %d", resp->diag_errno); | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int nv_read(int client_id, uint16_t nv_id, NvPacket &resp) { | 
					 | 
				
			||||||
  NvPacket req = { | 
					 | 
				
			||||||
    .cmd_code = DIAG_NV_READ_F, | 
					 | 
				
			||||||
    .nv_id = nv_id, | 
					 | 
				
			||||||
  }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  int res_len = diag_send_sync(client_id, (unsigned char*)&req, sizeof(req), | 
					 | 
				
			||||||
                               (unsigned char*)&resp, sizeof(resp)); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // hexdump((uint8_t*)&resp, res_len);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (resp.cmd_code != DIAG_NV_READ_F || resp.nv_id != nv_id) { | 
					 | 
				
			||||||
    LOGW("nv_read: diag command failed"); | 
					 | 
				
			||||||
    return -1; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (resp.status != NV_DONE) { | 
					 | 
				
			||||||
    LOGW("nv_read: read failed: %d", resp.status); | 
					 | 
				
			||||||
    return -1; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
  return 0; | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static uint32_t nv_read_u32(int client_id, uint16_t nv_id) { | 
					 | 
				
			||||||
  NvPacket resp = {0}; | 
					 | 
				
			||||||
  if (nv_read(client_id, nv_id, resp) < 0) { | 
					 | 
				
			||||||
    return 0; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
  return *(uint32_t*)resp.data; | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int main() { | 
					 | 
				
			||||||
  int err; | 
					 | 
				
			||||||
  int client_id = 0; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // setup diag
 | 
					 | 
				
			||||||
  bool ok = Diag_LSM_Init(NULL); | 
					 | 
				
			||||||
  assert(ok); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  uint16_t list = DIAG_CON_APSS | DIAG_CON_MPSS; | 
					 | 
				
			||||||
  int signal_type = SIGCONT; | 
					 | 
				
			||||||
  err = diag_register_dci_client(&client_id, &list, 0, &signal_type); | 
					 | 
				
			||||||
  assert(err == DIAG_DCI_NO_ERROR); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // log some stuff
 | 
					 | 
				
			||||||
  std::map<std::string, uint16_t> to_log = { | 
					 | 
				
			||||||
    {"B13", 6502}, | 
					 | 
				
			||||||
    {"B7", 6553}, | 
					 | 
				
			||||||
    {"B17", 6606}, | 
					 | 
				
			||||||
    {"B40", 6658}, | 
					 | 
				
			||||||
    {"B1", 6710}, | 
					 | 
				
			||||||
  }; | 
					 | 
				
			||||||
  auto log = json11::Json::object {}; | 
					 | 
				
			||||||
  for (auto const &kv : to_log) { | 
					 | 
				
			||||||
    NvPacket resp = {0}; | 
					 | 
				
			||||||
    nv_read(client_id, kv.second, resp); | 
					 | 
				
			||||||
    log[kv.first] = *(uint8_t*)resp.data; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  printf("%s\n", json11::Json(log).dump().c_str()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // cleanup
 | 
					 | 
				
			||||||
  err = diag_release_dci_client(&client_id); | 
					 | 
				
			||||||
  assert(err == DIAG_DCI_NO_ERROR); | 
					 | 
				
			||||||
  Diag_LSM_DeInit(); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue