Exemple #1
0
/* Inserts an event into the DBs cache. */
static pwr_tStatus
Insert (
  mh_sMsgInfo *ip
)
{
  sEvent *sp;
  char msg[80];
  pwr_tInt32 ret;
  sKey eventKey;
  DBT key, data;
  
  /*copy the event into the struct that is to be stored*/
  sp = CopyEvent(ip);

  /*clear the DBT-structs for future avoidance of errors(if DB is upgraded)*/
  memset(&key, 0, sizeof(key));
  memset(&data, 0, sizeof(data));
  
  eventKey.Id = ip->Id;
  eventKey.EventTime = net_NetTimeToTime( &ip->EventTime);
  
  /* copy the data do the DBT-structs*/
  key.data = (void *)&eventKey;
  key.size = sizeof(sKey);
  data.data = (void *)sp;
  data.size = sizeof(sEvent);

  switch(ret = dataBaseP->put(dataBaseP, NULL, &key, &data, DB_NOOVERWRITE))
  {
    case 0:
      /*everything is good*/
      nrOfInsertsSinceLastTime++;
      break;
    case DB_KEYEXIST:
      /*data elready stored*/
      break;
    default:
      /*error storing the event in DB send errormess to errh*/
      sprintf(msg, "dbp->put: %s, no mess stored", db_strerror(ret));
      Log(msg);
      break;
  }
  free(sp);
  return MH__SUCCESS;
}
void test_callback2(event_t *eventdata)
{
   sentToCallback2 = CopyEvent(eventdata); 
   printf("test_callback2 received eventdata ptr=%p, timeStamp=%d, prio=%d, sourceId=%d, eventType=%d, payloadSize=%d, *payload=%p\n", sentToCallback2, sentToCallback2->timeStamp, sentToCallback2->prio, sentToCallback2->sourceId, sentToCallback2->eventType, sentToCallback2->payloadSize, sentToCallback2->payload);
}
DCL_STATUS DclSTS_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data)
{
    if(DCL_STS_IS_HANDLE_MAGIC(handle) == 0)
    {
        return STATUS_INVALID_ARGUMENT;
    }

    switch(cmd)
    {
    case STS_CMD_GET_EVENT:
    {
        kal_bool  fg;
        TouchPanelMultipleEventStruct prTouchData;
        STS_CTRL_GET_T  *prCtrlGE;

        prCtrlGE = &(data->rTSCtrlGE);
        fg = touch_panel_get_event_(&prTouchData);

        if(fg!=KAL_FALSE)
            CopyEvent(prCtrlGE, &prTouchData); // copy prTouchData to prCtrlGE
        return fg;
    }
    case STS_CMD_PEEK_EVENT:
    {
        extern kal_bool touch_panel_peek_event_(TouchPanelMultipleEventStruct *touch_data);
        kal_bool  fg;
        TouchPanelMultipleEventStruct prTouchData;
        STS_CTRL_GET_T  *prCtrlGE;

        prCtrlGE = &(data->rTSCtrlGE);
        fg = touch_panel_peek_event_(&prTouchData);
        if(fg!=KAL_FALSE)
        {
            CopyEvent(prCtrlGE, &prTouchData); // copy prTouchData to prCtrlPE
        }
        return fg;
    }
    case STS_CMD_ENABLE:
    {
        STS_CTRL_EN_T  *prCtrlEN;
        prCtrlEN = &(data->rTSCtrlEN);
        touch_panel_enable_((kal_bool)prCtrlEN->fgEnable);/*enable/disable touch panel*/
        break;
    }
    case STS_CMD_FLUSH:
    {
        touch_panel_flush_();/*flsuh data in ring buffer*/
        break;
    }
    case STS_CMD_START_CALI:
    {
        STS_CTRL_SC_T  *prCtrlSC;
        prCtrlSC = &(data->rTSCtrlSC);
        touch_panel_start_cali_((TouchPanelCoordStruct *)(prCtrlSC->rpPoint), prCtrlSC->u2Num);
        break;
    }
    case STS_CMD_STOP_CALI:
    {
        touch_panel_stop_cali_();
        break;
    }
    case STS_CMD_READ_CALI:
    {
        STS_CTRL_RC_T  *prCtrlRC;
        TouchPanelCaliStruct rTPCali;

        prCtrlRC = &(data->rTSCtrlRC);
        touch_panel_read_cali_(&rTPCali );
        prCtrlRC->rCali.x_slope  = rTPCali.x_slope;
        prCtrlRC->rCali.x_offset = rTPCali.x_offset;
        prCtrlRC->rCali.y_slope  = rTPCali.y_slope;
        prCtrlRC->rCali.y_offset = rTPCali.y_offset;

        break;
    }
    case STS_CMD_SET_CALI:
    {
        STS_CTRL_SETC_T  *prCtrlSETC;
        TouchPanelCaliStruct rTPCali;

        prCtrlSETC = &(data->rTSCtrlSETC);
        rTPCali.x_slope  = prCtrlSETC->rCali.x_slope;
        rTPCali.x_offset = prCtrlSETC->rCali.x_offset;
        rTPCali.y_slope  = prCtrlSETC->rCali.y_slope;
        rTPCali.y_offset = prCtrlSETC->rCali.y_offset;
        touch_panel_set_cali_(rTPCali);
        break;
    }
    case STS_CMD_RESET:
    {
        STS_CTRL_RESET_T  *prCtrlRESET;
        prCtrlRESET = &(data->rTSCtrlRESET);
        touch_panel_reset_((kal_bool)prCtrlRESET->fgSkipUnreleaseEnable);
        break;
    }
    case STS_CMD_RESET_HANDWRITING:
    {
        touch_panel_reset_handwriting_();
        break;
    }
    case STS_CMD_CONF_SAMPLE_PERIOD:
    {
        STS_CTRL_CSP_T  *prCtrlCSP;
        prCtrlCSP = &(data->rTSCtrlCSP);
        touch_panle_conf_sample_period_(prCtrlCSP->u4Low, prCtrlCSP->u4High);
        break;
    }
    case STS_CMD_CONF_MOVE_OFFSET:
    {
        STS_CTRL_CMO_T  *prCtrlCMO;
        prCtrlCMO = &(data->rTSCtrlCMO);
        touch_panel_conf_move_offset_(prCtrlCMO->u2Pen_offset, prCtrlCMO->u2Stroke_offset,
                                      prCtrlCMO->u2Longtap_pen_offset,
                                      prCtrlCMO->u2Longtap_stroke_offset);
        break;
    }
    case STS_CMD_CONF_HANDWRITING:
    {
        STS_CTRL_CHW_T  *prCtrlCHW;
        prCtrlCHW = &(data->rTSCtrlCHW);
        touch_panel_conf_handwriting_((TouchPanelHandAreaStruct*)(prCtrlCHW->rArea), prCtrlCHW->u2n,
                                      (TouchPanelHandAreaStruct*)(prCtrlCHW->rExtArea) );
        break;
    }
    case STS_CMD_CONF_TIMEOUT_PERIOD:
    {
        STS_CTRL_CTP_T  *prCtrlCTP;
        prCtrlCTP = &(data->rTSCtrlCTP);
        touch_panle_conf_timeout_period_(prCtrlCTP->u4Longtap, prCtrlCTP->u4Repeat,
                                         prCtrlCTP->u4Handwriting_longtap);
        break;
    }
    case STS_CMD_POWER_ON:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_POWER_ON_T  *prCtrlPO;
        prCtrlPO = &(data->rTSCtrlPO);

        touch_panel_capacitive_power_on((kal_bool)prCtrlPO->fgPowerOn);
#endif
        break;
    }
    case STS_CMD_SET_DEVICE:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_SET_DEVICE_T *prCtrlSD;
        prCtrlSD = &(data->rTSCtrlSD);

        touch_panel_capacitive_set_device((ctp_device_mode_enum)prCtrlSD->mode);
#endif
        break;
    }
    case STS_CMD_COMMAND:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_COMMAND_T *prCtrlCmd;
        prCtrlCmd = &(data->rTSCtrlCmd);

        touch_panel_capacitive_command(prCtrlCmd->u4Command, prCtrlCmd->pVoid1, prCtrlCmd->pVoid2);
#endif
        break;
    }
    case STS_CMD_CTRL_CUSTOM_PARAM:
    {
        DCL_CTRL_CUSTOM_PARAM_T* prCtrlCCP;
        prCtrlCCP = &(data->rTSCtrlCustomParam);
        Touch_Panel_Ctrl_Param(*prCtrlCCP);
        break;
    }
    case STS_CMD_CTRL_CUSTOM_PARAM_RANGE:
    {
        DCL_CTRL_CUSTOM_PARAM_RANGE_T* prCtrlCPR;
        prCtrlCPR = &(data->rTSCtrlCustomParamRang);
        Touch_Panel_Ctrl_Param_Range(*prCtrlCPR);
        break;
    }
    case STS_CMD_CTRL_MICRONMETER_TO_COORD:
    {
        DCL_CTRL_MICRONMETER_COORD_T* prCtrlCMP;
        prCtrlCMP = &(data->rTSCtrlMicronMeter_Pixel);
        Touch_Panel_MicronMeter_To_Coord(prCtrlCMP);

        break;
    }
    case STS_CMD_CTRL_COORD_TO_MICRONMETER:
    {
        DCL_CTRL_MICRONMETER_COORD_T* prCtrlCM;
        prCtrlCM = &(data->rTSCtrlMicronMeter_Pixel);
        Touch_Panel_Pixel_To_MicronMeter(prCtrlCM);
        break;
    }
    case STS_CMD_QUERY_TP_TYPE:
    {
        DCL_TP_TYPE_T* prCtrlTP;
        prCtrlTP = &(data->rTSCtrlTouchPanelType);
#if defined(__TOUCH_PANEL_CAPACITY__)
        prCtrlTP->TouchPanelType = CTP_Type;
#else
        prCtrlTP->TouchPanelType = RTP_Type;
#endif

        break;
    }
    default:
    {
        return STATUS_INVALID_CMD;
    }
    }
    return STATUS_OK;
}