BOOL ValidateNDTPeriod(ULONG period)
{
    CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s ENTER\n", __FUNCTION__ ));
    BOOL ret = FALSE;
    ret = isvalueinarray_ndt(period, NetworkDeviceTrafficPeriods, ARRAY_SZ(NetworkDeviceTrafficPeriods));
    CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s EXIT RET[%d] \n", __FUNCTION__ , ret ));
    return ret;
} 
Ejemplo n.º 2
0
int ddmAddUsr(const User &usr)
{
    int course_id[3];

    memset(course_id, 0, sizeof(course_id));
    for (int i = 0; i < ARRAY_SZ(course_id) && i < usr.course_id_list.length(); i++) {
        course_id[i] = usr.course_id_list.at(i);
    }

    QString sql(QObject::tr("INSERT INTO users "
                "(name, passwd, IdCardNo, domain, courseId0, courseId1, courseId2) "
                "VALUES ('%1', '%2', '%3', %4, %5, %6, %7)")
                .arg(usr.name).arg(usr.passwd).arg(usr.idCardNo).arg(usr.domain)
                .arg(course_id[0]).arg(course_id[1]).arg(course_id[2]));
    qDebug() << sql;

    QSqlQuery q;
    if (!q.exec(sql)) {
        qDebug() << db.lastError();
        return -1;
    }

    return 0;
}
Ejemplo n.º 3
0
void __hidden init_dvm_iface(struct dvm_iface *dvm, const char *dso_path)
{
	int ii;

	if (dvm->dso)
		return;

	dvm->dso = (void *)1;
	dvm->dso = dlopen(dso_path, RTLD_NOW | RTLD_LOCAL);
	if (!dvm->dso) {
		libc_log("E:Could not open libdvm (%s)!", dso_path);
		return;
	}

	/* initialize the minimal Dalvik debug interface */
#define __init_sym(iface,sym,mem) \
	do { \
		if ((iface)->mem) \
			break; \
		(iface)->mem = dlsym((iface)->dso, #sym); \
		if ((iface)->mem) \
			break; \
		(iface)->mem = dlsym((iface)->dso, "_" #sym); \
		if ((iface)->mem) \
			break; \
		BUG(0xD0); \
	} while (0)
#define _init_sym(iface,sym,mem) \
	__init_sym(iface, sym, mem)
#define init_sym(IFACE,SYM) \
	_init_sym(IFACE, sym_DVM_ ## SYM, dvm ## SYM)

	init_sym(dvm, ThreadSelf);
	init_sym(dvm, ComputeExactFrameDepth);
	init_sym(dvm, FillStackTraceArray);
	init_sym(dvm, GetThreadName);
	init_sym(dvm, HumanReadableMethod);

#undef init_sym
#undef _init_sym
#undef __init_sym

	/*
	 * Now find the functions that indicate
	 * we are within the Java call stack
	 */
	dvm->dvmCallMethodSym[0][0] = dlsym(dvm->dso, DVM_CALL_METHOD);
	dvm->dvmCallMethodSym[1][0] = dlsym(dvm->dso, DVM_CALL_METHOD_A);
	dvm->dvmCallMethodSym[2][0] = dlsym(dvm->dso, DVM_CALL_METHOD_V);
	dvm->dvmCallMethodSym[3][0] = dlsym(dvm->dso, DVM_CALL_JNI_METHOD);
	dvm->dvmCallMethodSym[4][0] = dlsym(dvm->dso, DVM_CALL_JNI_METHOD_CHK);

	/*
	 * note: if either of these fail, then we won't ever find a
	 * java/dalvik backtrace, but we won't risk instability either
	 */
	for (ii = 0; ii < (int)ARRAY_SZ(dvm->dvmCallMethodSym); ii++) {
		if (!dvm->dvmCallMethodSym[ii][0]) {
			libc_log("W:Couldn't find dvmCallMethod[%d] in libdvm.so", ii);
		} else {
			void *end;
			end = _find_symbol_end(dvm->dvmCallMethodSym[ii][0]);
			dvm->dvmCallMethodSym[ii][1] = end;
			/*
			libc_log("I:dvmCallMethod[%d][%p-%p]:", ii,
				 dvm->dvmCallMethodSym[ii][0],
				 dvm->dvmCallMethodSym[ii][1]);
			 */
		}
	}

	dvm->valid = 1;
	return;
}
Ejemplo n.º 4
0
void __hidden get_dvm_backtrace(struct tls_info *tls, struct dvm_iface *dvm,
				struct bt_state *bt_state, struct dvm_bt *dvm_bt)
{
	int cnt;

	if (!dvm->valid || !tls)
		return;

	dvm_bt->count = 0;

	/*
	 * Search through the native backtrace for the java stack indicators.
	 * It should be faster to search up from the bottom of the stack
	 * because the dvmCallMethod function is generally invoked from
	 * platform-specific assembly quite early in the backtrace.
	 */
	cnt = bt_state->count;
	while (--cnt >= 0) {
		int ii;
		void *addr = bt_state->frame[cnt].pc;
		for (ii = 0; ii < (int)ARRAY_SZ(dvm->dvmCallMethodSym); ii++)
			if (_in_range(addr, dvm->dvmCallMethodSym[ii]))
				goto do_dvm_bt;
	}
	return;

	/*
	 * We have a call stack that's from a Java/Dalvik thread:
	 * get the backtrace!
	 */
do_dvm_bt:
	{
		struct Thread *self;
		uint32_t *fp = NULL;
		char *tname;
		struct Method **mlist;
		int r;

		self = dvm->dvmThreadSelf();
		if (!self)
			return;
		fp = self->interpSave.curFrame;
		if (!fp)
			return;

		/*
		 * There is a bug in dvmGetThreadName() that causes this
		 * to crash when we call it before the thread has a
		 * Java/Dalvik name, but after a Java function has been
		 * invoked. This happens primarily at system boot...
		tname = tls->dvm_threadname;
		if (!tname[0]) {
			int len;
			std::string nm = dvm->dvmGetThreadName(self);
			len = nm.length();
			if (len >= TLS_MAX_STRING_LEN)
				len = TLS_MAX_STRING_LEN - 1;
			libc.memcpy(tname, nm.c_str(), len);
			libc_log("I:DalvikThreadName:%s:", tname);
		}
		*/

		mlist = dvm_bt->mlist;
		dvm_bt->count = dvm->dvmComputeExactFrameDepth(fp);
		if (dvm_bt->count > MAX_BT_FRAMES) {
			/*
			 * we need an array big enough for this frame
			 * because the dvm fill stack array function
			 * doesn't care how big our array really is...
			 */
			mlist = libc.malloc((dvm_bt->count + 1) * sizeof(struct Method *));
			if (!mlist) {
				dvm_bt->count = 0;
				return;
			}
			dvm_bt->count = MAX_BT_FRAMES;
		}

		/*
		 * Grrr. This API doesn't respect the 'length' parameter.
		 * It just sends out an error message (if you're lucky enough
		 * to have copiled without NDEBUG), and continues to mash on
		 * your memory even though it's out of bounds...
		 */
		dvm->dvmFillStackTraceArray(fp, mlist, dvm_bt->count);

		if (mlist != dvm_bt->mlist) {
			/* copy only the portion of data back that fits */
			libc.memcpy(dvm_bt->mlist, mlist,
				    dvm_bt->count * sizeof(struct Method *));
			libc.free(mlist);
		}
	}

	return;
}
Ejemplo n.º 5
0
struct task_steps_pool *steps_pool_get(void) {
  return task_steps_pool_create(steps, ARRAY_SZ(steps));
}
Ejemplo n.º 6
0
// Entry point
int main()
{
  struct uart_pkt {
      unsigned char magic;
#define UART_PKT_MAGIC          'N'

      //  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
      //  |  dir  |  dev  |     cnt       |
      unsigned char mode;
#define UART_PKT_MODE_CNT_MASK   0xF
#define UART_PKT_MODE_CNT_SHIFT  0

#define UART_PKT_MODE_DEV_MASK   0x30
#define UART_PKT_MODE_DEV_SHIFT  4
#define UART_PKT_DEV_GPIO        (0<<UART_PKT_MODE_DEV_SHIFT)
#define UART_PKT_DEV_LMS         (1<<UART_PKT_MODE_DEV_SHIFT)
#define UART_PKT_DEV_VCTCXO      (2<<UART_PKT_MODE_DEV_SHIFT)
#define UART_PKT_DEV_SI5338      (3<<UART_PKT_MODE_DEV_SHIFT)

#define UART_PKT_MODE_DIR_MASK   0xC0
#define UART_PKT_MODE_DIR_SHIFT  6
#define UART_PKT_MODE_DIR_READ   (2<<UART_PKT_MODE_DIR_SHIFT)
#define UART_PKT_MODE_DIR_WRITE  (1<<UART_PKT_MODE_DIR_SHIFT)
  };

  struct uart_cmd {
      unsigned char addr;
      unsigned char data;
  };

  // Set the prescaler for 400kHz with an 80MHz clock (prescaer = clock / (5*desired) - 1)
  IOWR_16DIRECT(I2C, OC_I2C_PRESCALER, 39 ) ;
  IOWR_8DIRECT(I2C, OC_I2C_CTRL, OC_I2C_ENABLE ) ;

  // Set the UART divisor to 14 to get 4000000bps UART (baud rate = clock/(divisor + 1))
  IOWR_ALTERA_AVALON_UART_DIVISOR(UART_0_BASE, 19) ;

  // Set the IQ Correction parameters to 0
  IOWR_ALTERA_AVALON_PIO_DATA(IQ_CORR_RX_PHASE_GAIN_BASE, DEFAULT_CORRECTION);
  IOWR_ALTERA_AVALON_PIO_DATA(IQ_CORR_TX_PHASE_GAIN_BASE, DEFAULT_CORRECTION);

  /* Event loop never exits. */
  {
      char state;
      enum {
          LOOKING_FOR_MAGIC,
          READING_MODE,
          READING_CMDS,
          EXECUTE_CMDS
      };

      unsigned short i, cnt;
      unsigned char mode;
      unsigned char buf[14];
      struct uart_cmd *cmd_ptr;
      uint32_t tmpvar = 0;

      state = LOOKING_FOR_MAGIC;
      while(1)
      {
          // Check if anything is in the FSK UART
          if( IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE) & ALTERA_AVALON_UART_STATUS_RRDY_MSK )
          {
              uint8_t val ;
              int isRead;
              int isWrite;

              val = IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE) ;

              switch (state) {
              case LOOKING_FOR_MAGIC:
                  if (val == UART_PKT_MAGIC)
                      state = READING_MODE;
                  break;
              case READING_MODE:
                  mode = val;
                  if ((mode & UART_PKT_MODE_CNT_MASK) > 7) {
                      mode &= ~UART_PKT_MODE_CNT_MASK;
                      mode |= 7;
                  }
                  i = 0;
                  cnt = (mode & UART_PKT_MODE_CNT_MASK) * sizeof(struct uart_cmd);
                  state = READING_CMDS;
                  break;
              case READING_CMDS:
                  // cnt here means the number of bytes to read
                  buf[i++] = val;
                  if (!--cnt)
                      state = EXECUTE_CMDS;
                  break;
              default:
                  break;
              }

              void write_uart(unsigned char val) {
                  while (!(IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE) & ALTERA_AVALON_UART_STATUS_TRDY_MSK));
                  IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE,  val);
              }

              isRead = (mode & UART_PKT_MODE_DIR_MASK) == UART_PKT_MODE_DIR_READ;
              isWrite = (mode & UART_PKT_MODE_DIR_MASK) == UART_PKT_MODE_DIR_WRITE;

              if (state == EXECUTE_CMDS) {
                  write_uart(UART_PKT_MAGIC);
                  write_uart(mode);
                  // cnt here means the number of commands
                  cnt = (mode & UART_PKT_MODE_CNT_MASK);
                  cmd_ptr = (struct uart_cmd *)buf;

                  if ((mode & UART_PKT_MODE_DEV_MASK) == UART_PKT_DEV_LMS) {
                      for (i = 0; i < cnt; i++) {
                          if (isRead) {
                              lms_spi_read(cmd_ptr->addr, &cmd_ptr->data);
                          } else if (isWrite) {
                              lms_spi_write(cmd_ptr->addr, cmd_ptr->data);
                              cmd_ptr->data = 0;
                          } else {
                              cmd_ptr->addr = 0;
                              cmd_ptr->data = 0;
                          }
                          cmd_ptr++;
                      }
                  }
                  if ((mode & UART_PKT_MODE_DEV_MASK) == UART_PKT_DEV_SI5338) {
                      for (i = 0; i < cnt; i++) {
                          if (isRead) {
                              uint8_t tmpvar;
                              si5338_read(cmd_ptr->addr, &tmpvar);
                              cmd_ptr->data = tmpvar;
                          } else if (isWrite) {
                              si5338_write(cmd_ptr->addr, cmd_ptr->data);
                              cmd_ptr->data = 0;
                          } else {
                              cmd_ptr->addr = 0;
                              cmd_ptr->data = 0;
                          }
                          cmd_ptr++;
                      }
                  }

                  const struct {
                      enum {
                          GDEV_UNKNOWN,
                          GDEV_GPIO,
                          GDEV_IQ_CORR_RX,
                          GDEV_IQ_CORR_TX,
                          GDEV_FPGA_VERSION,
                          GDEV_TIME_TIMER,
                          GDEV_VCTXCO,
                          GDEV_XB_LO,
                          GDEV_EXPANSION,
                          GDEV_EXPANSION_DIR,
                      } gdev;
                      int start, len;
                  } gdev_lut[] = {
                          {GDEV_GPIO,           0, 4},
                          {GDEV_IQ_CORR_RX,     4, 4},
                          {GDEV_IQ_CORR_TX,     8, 4},
                          {GDEV_FPGA_VERSION,  12, 4},
                          {GDEV_TIME_TIMER,    16, 16},
                          {GDEV_VCTXCO,        34, 2},
                          {GDEV_XB_LO,         36, 4},
                          {GDEV_EXPANSION,     40, 4},
                          {GDEV_EXPANSION_DIR, 44, 4},
                  };
#define ARRAY_SZ(x) (sizeof(x)/sizeof(x[0]))
#define COLLECT_BYTES(x)       tmpvar &= ~ ( 0xff << ( 8 * cmd_ptr->addr));   \
                              tmpvar |= cmd_ptr->data << (8 * cmd_ptr->addr); \
                              if (lastByte) { x; tmpvar = 0; } \
                              cmd_ptr->data = 0;

                  if ((mode & UART_PKT_MODE_DEV_MASK) == UART_PKT_DEV_GPIO) {
                    uint32_t device;
                    int lut, lastByte;
                    for (i = 0; i < cnt; i++) {
                        device = GDEV_UNKNOWN;
                        lastByte = 0;
                        for (lut = 0; lut < ARRAY_SZ(gdev_lut); lut++) {
                            if (gdev_lut[lut].start <= cmd_ptr->addr && (gdev_lut[lut].start + gdev_lut[lut].len) > cmd_ptr->addr) {
                                cmd_ptr->addr -= gdev_lut[lut].start;
                                device = gdev_lut[lut].gdev;
                                lastByte = cmd_ptr->addr == (gdev_lut[lut].len - 1);
                                break;
                            }
                        }

                        if (isRead) {
                            if (device == GDEV_FPGA_VERSION)
                                cmd_ptr->data = (FPGA_VERSION >> (cmd_ptr->addr * 8));
                            else if (device == GDEV_TIME_TIMER)
                                cmd_ptr->data = IORD_8DIRECT(TIME_TAMER, cmd_ptr->addr);
                            else if (device == GDEV_GPIO)
                                cmd_ptr->data = (IORD_ALTERA_AVALON_PIO_DATA(PIO_0_BASE)) >> (cmd_ptr->addr * 8);
                            else if (device == GDEV_EXPANSION)
                                cmd_ptr->data = (IORD_ALTERA_AVALON_PIO_DATA(PIO_1_BASE)) >> (cmd_ptr->addr * 8);
                            else if (device == GDEV_EXPANSION_DIR)
                                cmd_ptr->data = (IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE)) >> (cmd_ptr->addr * 8);
                            else if (device == GDEV_IQ_CORR_RX)
                                cmd_ptr->data = (IORD_ALTERA_AVALON_PIO_DATA(IQ_CORR_RX_PHASE_GAIN_BASE)) >> (cmd_ptr->addr * 8);
                            else if (device == GDEV_IQ_CORR_TX)