コード例 #1
0
/* Scan callbacks */
void
on_scan_activate (GtkWidget * widget, gpointer data)
{
	Netinfo *scan = data;
	GtkEntry *entry_host;
	gchar *text;

	g_return_if_fail (scan != NULL);

	if (scan->running) {
		scan_stop (scan);
	} else {
		if (netinfo_validate_host (scan)) {
			entry_host = GTK_ENTRY (
				gtk_bin_get_child (GTK_BIN (scan->host)));
			text = g_strdup (gtk_entry_get_text (entry_host));

			gn_combo_history_add (scan->history, text);

			g_free (text);

			scan_do (scan);
		}
	}
}
コード例 #2
0
ファイル: keysynth-demo.c プロジェクト: GNOME/at-spi
static SPIBoolean
switch_callback (const AccessibleKeystroke *key, void *user_data)
{
  static SPIBoolean is_down = FALSE;

  if (key->type == SPI_KEY_RELEASED)
    {
      g_print ("switch up\n");
      is_down = FALSE;
      scan_stop (key->timestamp);
    }
  else 
  if (!is_down)
    {
      g_print ("switch down\n");
      is_down = TRUE;
      scan_start (key->timestamp);
    }
  /* catch the first, ignore the rest (will repeat) until keyrelease */
  return FALSE;
}
コード例 #3
0
ファイル: ap_scan.c プロジェクト: github188/1521
static void scan_state_machine(void *p_handle)
{
  scan_priv_t *p_scan_priv = (scan_priv_t *)p_handle;
  scan_policy_t *p_scan_policy = p_scan_priv->p_policy;
  scan_data_t *p_scan_data = p_scan_priv->p_priv_data;
  find_tp_ret_t ret = FIND_SUC;
  class_handle_t nc_handle = class_get_handle_by_id(NC_CLASS_ID);
  event_t evt = {0};

  // State machine
  switch(p_scan_data->state)
  {
    case SCAN_IDLE:
      break;
    case SCAN_GET_TP:
      // Get current tp information
      //log_perf(LOG_AP_SCAN, PERF_GET_TP_BEGIN,0,0);
      //log_perf(LOG_AP_SCAN, PERF_GET_ONETP_BEGIN,0,0);
      ret = p_scan_policy->get_tp_info(p_scan_policy->p_priv_data,
        &p_scan_data->p_rt_data->find_tp);

      if(FIND_SUC == ret) //found new tp
      {
        log_perf(LOG_AP_SCAN, PERF_GET_TP_END,
         p_scan_data->p_rt_data->find_tp.channel_info.frequency,0);
        p_scan_data->state = SCAN_LOCK_TP;
      }
      else if(FIND_DONE == ret)
      {
        log_perf(LOG_AP_SCAN, PERF_END,0,0);
        p_scan_data->state = SCAN_FINISHED;
      }
      else if(FIND_BUSY == ret)
      {
        //waiting....
      }
      else
      {
        //what's happend? UFO?
        MT_ASSERT(0);
      }
      break;
    case SCAN_LOCK_TP:
      //Set current tp information
      log_perf(LOG_AP_SCAN,PERF_DO_LOCK, 0, 0);
      nc_set_tp(nc_handle, p_scan_data->p_nc_svc,
        &p_scan_data->p_rt_data->find_tp);
      p_scan_data->p_rt_data->job_dbg_info.spend_ticks = mtos_ticks_get();

      //reset parameter
      init_para(p_scan_data);
      memcpy(&p_scan_data->p_rt_data->result.tp_info,
        &p_scan_data->p_rt_data->find_tp, sizeof(nc_channel_info_t));

      //Wait new the lock status of recently set tp
      p_scan_data->state = SCAN_WAIT_TP_LOCK;
      break;
    case SCAN_WAIT_TP_LOCK:
      break;
    case SCAN_FINISHED:
      OS_PRINTF("scan state: SCAN_FINISHED\n");
      log_perf(LOG_AP_SCAN, 100, 0, 0);
      scan_stop(p_scan_priv);

      evt.id = SCAN_EVT_FINISHED;
      evt.data1 = 0;
      ap_frm_send_evt_to_ui(APP_SCAN, &evt);
      p_scan_data->state = SCAN_IDLE;
      nvod_mosaic_buf_reset(class_get_handle_by_id(NVOD_MOSAIC_CLASS_ID));
      break;
    case SCAN_SCANING:
      if(p_scan_data->p_rt_data->pending_job == 0)
      {
        RET_CODE ret = SUCCESS;
        /*
        MT_ASSERT(p_scan_data->p_rt_data->job_dbg_info.pat_num == 0);
        MT_ASSERT(p_scan_data->p_rt_data->job_dbg_info.sdt_num == 0);
        MT_ASSERT(p_scan_data->p_rt_data->job_dbg_info.pmt_num == 0);
        MT_ASSERT(p_scan_data->p_rt_data->job_dbg_info.video_packet_num == 0);
        MT_ASSERT(p_scan_data->p_rt_data->job_dbg_info.nit_num == 0);
        */
        log_perf(LOG_AP_SCAN,PERF_SAVE_DB_START,PROG_DB,0);

        p_scan_data->p_rt_data->result.pg_num = p_scan_data->p_rt_data->cur_pg_offset;
        ret = p_scan_policy->on_tp_done(p_scan_policy->p_priv_data,
          &p_scan_data->p_rt_data->result);
        log_perf(LOG_AP_SCAN,PERF_SAVE_DB_DONE,PROG_DB,0);
        if(ret == SUCCESS)
        {
          log_perf(LOG_AP_SCAN, PERF_GET_ONETP_END,0,0);
          p_scan_data->state = SCAN_GET_TP;
          log_perf(LOG_AP_SCAN, PERF_GET_TP_BEGIN,0,0);
          log_perf(LOG_AP_SCAN, PERF_GET_ONETP_BEGIN,0,0);
        }
        else
        {
          //Database is full or some error, break scan
          p_scan_data->state = SCAN_IDLE;
        }
      }
	  #if 0 //for specified bouquet id
	  #else
      else if(p_scan_data->p_rt_data->bat_multi_mode)
      {
        if(mtos_ticks_get() - p_scan_data->p_rt_data->start_bat_tickets
            > 100*2)
        {
          scan_free_bat(p_scan_priv);
        }
      }
	  #endif
      /*  //for debug
      else
      {
        if(mtos_ticks_get() - p_scan_data->p_rt_data->job_dbg_info.spend_ticks
            > 100*2)
        {
          job_dbg_info_t *p_dbg = &p_scan_data->p_rt_data->job_dbg_info;
          SCAN_DBG("pending job %d, nit %d, pat %d, pmt %d, sdt %d, v %d\n",
            p_scan_data->p_rt_data->pending_job,
            p_dbg->nit_num, p_dbg->pat_num, p_dbg->pmt_num,
            p_dbg->sdt_num, p_dbg->video_packet_num);
        }
      }
      */

      break;
    default:
      break;
  }
}