Ejemplo n.º 1
0
static int logCreateBlock(unsigned char id, struct ops_setting * settings, int len)
{
  int i;
  
  for (i=0; i<LOG_MAX_BLOCKS; i++)
    if (id == logBlocks[i].id) return EEXIST;
  
  for (i=0; i<LOG_MAX_BLOCKS; i++)
    if (logBlocks[i].id == BLOCK_ID_FREE) break;
  
  if (i == LOG_MAX_BLOCKS)
    return ENOMEM;
  
  logBlocks[i].id = id;
  //logBlocks[i].timer = xTimerCreate( (const signed char *)"logTimer", M2T(1000), 
  //                                   pdRT_TRUE, &logBlocks[i], logBlockTimed );
  logBlocks[i].timer = rt_timer_create("logTimer", logBlockTimed, &logBlocks[i], M2T(1000), RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER);

  logBlocks[i].ops = RT_NULL;
  
  if (logBlocks[i].timer == RT_NULL)
  {
	logBlocks[i].id = BLOCK_ID_FREE;
	return ENOMEM;
  }

  DEBUG("Added block ID %d\n", id);
  
  return logAppendBlock(id, settings, len);
}
Ejemplo n.º 2
0
static int logCreateBlock(unsigned char id, struct ops_setting * settings, int len)
{
  int i;
  
  for (i=0; i<LOG_MAX_BLOCKS; i++)
    if (id == logBlocks[i].id) return EEXIST;
  
  for (i=0; i<LOG_MAX_BLOCKS; i++)
    if (logBlocks[i].id == BLOCK_ID_FREE) break;
  
  if (i == LOG_MAX_BLOCKS)
    return ENOMEM;
  
  logBlocks[i].id = id;
  logBlocks[i].timer = xTimerCreate( (const signed char *)"logTimer", M2T(1000), 
                                     pdTRUE, &logBlocks[i], logBlockTimed );
  logBlocks[i].ops = NULL;
  
  if (logBlocks[i].timer == NULL)
  {
	logBlocks[i].id = BLOCK_ID_FREE;
	return ENOMEM;
  }

  DEBUG("Added block ID %d\n", id);
  
  return logAppendBlock(id, settings, len);
}
Ejemplo n.º 3
0
void logControlProcess()
{
	int ret = ENOEXEC;

	switch (p.data[0])
	{
		case CONTROL_CREATE_BLOCK:
			ret = logCreateBlock(p.data[1], (struct ops_setting*) &p.data[2],
			                     (p.size - 2) / sizeof(struct ops_setting));
			break;
		case CONTROL_APPEND_BLOCK:
			ret = logAppendBlock(p.data[1], (struct ops_setting*) &p.data[2],
			                     (p.size - 2) / sizeof(struct ops_setting));
			break;
		case CONTROL_DELETE_BLOCK:
			ret = logDeleteBlock(p.data[1]);
			break;
		case CONTROL_START_BLOCK:
			ret = logStartBlock(p.data[1], p.data[2] * 10);
			break;
		case CONTROL_STOP_BLOCK:
			ret = logStopBlock(p.data[1]);
			break;
		case CONTROL_RESET:
			logReset();
			ret = 0;
			break;
	}

	//Commands answer
	p.data[2] = ret;
	p.size = 3;
	crtpSendPacket(&p);
}