Esempio n. 1
0
int proc_loop(void)
{
	int rc = 0;

	log_debug("setting working directory ...\n");
	if ((mkdir(daemon_cfg.notify_dir, 0777) != 0) && (errno != EEXIST)) {
		rc = -errno;
		log_error("failed create folder %s (errno = %d)\n",
			  daemon_cfg.notify_dir, errno);
		goto err;
	}

	log_debug("setting store ...\n");
	rc = open_store();
	if (rc < 0) {
		goto err;
	}

	log_debug("setting flow ...\n");
	rc = open_flow();
	if (rc < 0) {
		goto err;
	}

	log_debug("setting notification ...\n");
	rc = open_notify();
	if (rc < 0) {
		goto err;
	}

	log_debug("setting message processing ...\n");
	rc = open_message();
	if (rc < 0) {
		goto err;
	}

	log_debug("starting loop ...\n");
	while ((0 == daemon_cfg.sig) && (errno != EINTR)) {
		fd_set readfds;
		struct timeval tv;
		int max_fd = -1;

		FD_ZERO(&readfds);
		FD_SET(daemon_cfg.sock_fd, &readfds);
		max_fd = daemon_cfg.sock_fd;
		FD_SET(daemon_cfg.notify_fd, &readfds);
		max_fd = (max_fd < daemon_cfg.notify_fd ? daemon_cfg.notify_fd : max_fd);

		/* Use timeout for select() call */
		tv.tv_sec = 60;
		tv.tv_usec = 0;

		rc = select(max_fd + 1, &readfds, NULL, NULL, &tv);
		if (rc < 0) {
			rc = 0;
			if (errno != EINTR) {
				rc = -errno;
				log_error("Failed select() errno %d (%s)\n", errno,
						strerror(errno));
			}
			goto err;
		} else if (rc == 0) {
			continue;
		}

		/* Check messages from processes */
		if (FD_ISSET(daemon_cfg.sock_fd, &readfds)) {
			log_debug("message processing ...\n");
			rc = proc_message();
		}

		/* Check any events from file system monitor */
		if (FD_ISSET(daemon_cfg.notify_fd, &readfds)) {
			log_debug("notification processing ...\n");
			rc = proc_notify();
		}
	}

err:
	log_debug("finishing loop ...\n");

	close_message();
	close_notify();
	close_flow();
	close_store();

	return rc;
}
Esempio n. 2
0
RET_CODE on_ca_message_update(control_t *p_ctrl, u16 msg,
                             u32 para1, u32 para2)
{
  u32 event_id = para2;
  BOOL card_is_removed = FALSE;
  
  rect_t ca_notify_rect =
  {
    250, 125,
    260 + NOTIFY_CONT_W,
    125 + NOTIFY_CONT_H,
  };
  if((g_ca_last_msg == event_id) && (event_id != CAS_S_CLEAR_DISPLAY)) //same msg
  {
      return SUCCESS;
  }
  if(event_id != CAS_S_ZONE_CHECK_END)
  {
    g_ca_last_msg = event_id;
  }
  OS_PRINTF("(ui_get_curpg_scramble_flag()) : %d\n",ui_get_curpg_scramble_flag());
  switch(event_id)//from CCTB_HUNAN
  {
    case CAS_S_ADPT_CARD_INSERT://card insert
      OS_PRINTF("CAS_S_ADPT_CARD_INSERT\n");
      ui_set_smart_card_insert(TRUE);
	  update_ca_message(RSC_INVALID_ID);
  	  ui_reset_ca_last_msg();
      ui_set_notify(&ca_notify_rect, NOTIFY_TYPE_STRID, IDS_CAS_S_CARD_INSERT);
      card_is_removed = FALSE;
      break;
    case CAS_S_ADPT_CARD_REMOVE://卡移除
      OS_PRINTF("CAS_S_ADPT_CARD_REMOVE\n");
      ui_set_smart_card_insert(FALSE);
    {
      control_t *p_cont = NULL;
	  update_ca_message(RSC_INVALID_ID);
  	  ui_reset_ca_last_msg();
      if((p_cont = fw_find_root_by_id(ROOT_ID_CA_FINGER)) != NULL)
      {
        ui_set_finger_show(FALSE);
        close_ca_finger_menu();
      }
      if((p_cont = fw_find_root_by_id(ROOT_ID_DIALOG)) != NULL)
      {
        ui_comm_dlg_close();
      }
      if((p_cont = fw_find_root_by_id(ROOT_ID_CA_ENTITLE_EXP_DLG)) != NULL)
      {
        close_ca_entitle_expire_dlg();
      }
      if((p_cont = fw_find_root_by_id(ROOT_ID_CA_PAIR)) != NULL)
      {
        close_ca_pair_dlg();
      }
      if((p_cont = fw_find_root_by_id(ROOT_ID_CA_BURSE_CHARGE)) != NULL)
      {
        close_ca_burse_dlg();
      }
      card_is_removed = TRUE;
      ui_set_notify(&ca_notify_rect, NOTIFY_TYPE_STRID, IDS_CAS_S_CARD_REMOVE);
    }
    set_uiokey_status(FALSE);
    break;
    case CAS_C_EMM_APP_STOP://智能卡停止服务
      OS_PRINTF("CAS_C_EMM_APP_STOP\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_APP_STOP);
      break;
    case CAS_C_EMM_APP_RESUME://智能卡恢复服务
      OS_PRINTF("CAS_C_EMM_APP_RESUME\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_APP_RESUME);
      break;
    case CAS_C_EMM_PROG_UNAUTH://取消节目订购
      OS_PRINTF("CAS_C_EMM_PROG_UNAUTH\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_PROG_UNAUTH);
      break;
    case CAS_C_EMM_PROG_AUTH://增加节目订购
      OS_PRINTF("CAS_C_EMM_PROG_AUTH\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_PROG_AUTH);
      break;
    case CAS_C_EMM_UPDATE_GNO://智能卡组号更新
      OS_PRINTF("CAS_C_EMM_UPDATE_GNO\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_UPDATE_GNO);
      break;
    case CAS_S_CARD_NEED_UPG://智能卡升级请拔插卡
      OS_PRINTF("CAS_S_CARD_NEED_UPG\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_E_UPDATE_GK);
      break;
    case CAS_S_MODIFY_ZONECODE://区域码更新
      OS_PRINTF("CAS_S_MODIFY_ZONECODE\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_CARD_AREA_CODE_UPDATE);
      break;
    case CAS_C_NOTIFY_UPDATE_CTRLCODE://智能卡限播码更新
      OS_PRINTF("智能卡限播码更新!\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_MODIFY_CTRLCODE);
      break;
    case CAS_C_NOTIFY_UPDATE_CRT://授权更新
      OS_PRINTF("授权更新!\n");
      close_notify();
      ui_set_notify(&ca_notify_rect, NOTIFY_TYPE_STRID,IDS_CA_CAS_CARD_ENTITLE_UPDATE);
      break;
    case CAS_C_SHOW_NEW_EMAIL://新邮件
      OS_PRINTF("CAS_C_SHOW_NEW_EMAIL\n");
      update_email_picture(EMAIL_PIC_SHOW);
      break;
    case CAS_C_EN_PARTNER://启用机卡匹配
      OS_PRINTF("CAS_C_EN_PARTNER\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_START_PAIR);
      break;
    case CAS_C_DIS_PARTNER://取消机卡匹配
      OS_PRINTF("CAS_C_DIS_PARTNER\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_CARD_REMATCH_CANCEL);
      break;
    case CAS_C_SET_SON_CARD://设置子母卡
      OS_PRINTF("设置子母卡!\n");
      ui_set_notify(&ca_notify_rect,NOTIFY_TYPE_STRID,IDS_CA_SET_MON_SON_CARD);
      break;
    case CAS_S_ZONE_CHECK_END:
      OS_PRINTF("\r\n*** %s :CAS_S_ZONE_CHECK_END ",__FUNCTION__);
	  #ifndef WIN32
      on_ca_zone_check_end();//rsc
      #else
	  ui_desktop_start();
	  #endif
      break;
    case CAS_C_HIDE_NEW_EMAIL:
      OS_PRINTF("CAS_C_HIDE_NEW_EMAIL\n");
      update_email_picture(EMAIL_PIC_HIDE);
      break;
    case CAS_S_CLEAR_DISPLAY:
      OS_PRINTF("CAS_S_CLEAR_DISPLAY\n");
      ui_set_playpg_scrambled(FALSE);
      update_ca_message(RSC_INVALID_ID);
      ui_set_ecm_msg(FALSE);
      {
        control_t *p_cont = NULL;
        if((p_cont = fw_find_root_by_id(ROOT_ID_CA_PAIR)) != NULL)
        {
          close_ca_pair_dlg();
        }
      }
      break;
    default:
      OS_PRINTF("on_ca_message_update :   default : event_id = [%d]\n",event_id);
      break;
  }

  if(ui_get_curpg_scramble_flag()) 
  {
    ui_set_ecm_msg(TRUE);
    switch(event_id)//from CCTB_HUNAN
    {
      case CAS_E_CADR_NOT_ACT://请激活子卡
        OS_PRINTF("CAS_E_CADR_NOT_ACT\n");
        update_ca_message(IDS_CAS_SON_CADR_NOT_ACT);
        break;
    case CAS_C_AUTH_LOGO_DISP://节目预授权
        OS_PRINTF("节目预授权!\n");
        manage_open_menu(ROOT_ID_CA_PRE_AUTH, 0, 0);
        break;
    case CAS_C_UPDATE_BALANCE://IPPV节目
        OS_PRINTF("IPPV节目\n");
        //manage_open_menu(ROOT_ID_CA_IPPV_PPT_DLG, 0, 0);
        manage_open_menu(ROOT_ID_CA_PPV_ICON, 0, 0);
        break;
      case CAS_E_ZONE_CODE_ERR://区域错误
        OS_PRINTF("CAS_E_ZONE_CODE_ERR\n");
        update_ca_message(IDS_CA_AREA_CODE_ERR);
        break;
      case CAS_E_CADR_NO_MONEY://智能卡余额不足
        OS_PRINTF("CAS_E_CADR_NO_MONEY\n");
        update_ca_message(IDS_CA_CARD_BALANCE_LESS);
        break;
      case CAS_E_PROG_UNAUTH://频道未授权
        OS_PRINTF("CAS_E_PROG_UNAUTH\n");
		OS_PRINTF("error num %d\n",__LINE__);
      	update_ca_message(IDS_CA_SW1SW2_ECM_NOT_AUTHORIZED);
        break;
      case CAS_E_CARD_AUTH_FAILED:
        OS_PRINTF("智能卡授权错误\n");
        update_ca_message(IDS_CA_ILLEGAL_AUTH);
        break;
      case CAS_E_CARD_LOCKED://智能卡被锁
        OS_PRINTF("CAS_E_CARD_LOCKED\n");
        update_ca_message(IDS_CAS_E_CARD_LOCKED);
        break;
      case CAS_E_SERVICE_LOCKED://服务已被锁
        OS_PRINTF("CAS_E_SERVICE_LOCKED\n");
        update_ca_message(IDS_CAS_E_SERVICE_LOCKED);
        break;
      case CAS_E_EXTER_AUTHEN://智能卡认证失败
        OS_PRINTF("CAS_E_EXTER_AUTHEN\n");
        update_ca_message(IDS_CAS_E_CARD_PARTNER_FAILED);
        break;
      case CAS_C_IPPT_BUY_OR_NOT://IPP信息
        OS_PRINTF("CAS_C_IPPT_BUY_OR_NOT\n");
        update_ca_message(IDS_IPPV_PROG);
		#ifndef WIN32
        ui_ca_get_info(CAS_CMD_IPPV_INFO_SYNC_GET, 0,0);
		#endif
        break;
      case CAS_E_CARD_NOT_FOUND://机卡不匹配
        OS_PRINTF("CAS_E_CARD_NOT_FOUND\n");
        update_ca_message(IDS_CA_E31);
        break;
      case CAS_E_CARD_FAILED://智能卡升级失败
        OS_PRINTF("CAS_E_CARD_FAILED\n");
        update_ca_message(IDS_CAS_E_CARD_UPG_FAILED);
        break;
      case CAS_E_NOT_REG_CARD://请插入智能卡
        OS_PRINTF("CAS_E_NOT_REG_CARD\n");
        update_ca_message(IDS_CRYPTED_PROG_INSERT_SMC);
        break;
      case CAS_S_ADPT_CARD_INSERT://智能卡插入,清除提示信息
        OS_PRINTF("CAS_S_ADPT_CARD_INSERT\n");
        update_ca_message(RSC_INVALID_ID);
        break;
      case CAS_C_ENTITLE_CLOSED://授权关闭
        update_ca_message(IDS_CA_AUTH_CLOSED);
        break;
      case CAS_S_CARD_AUTHEN_UPDATING://授权刷新
        update_ca_message(IDS_CA_AUTH_UPDATE);
        break;
      case CAS_E_CARD_RENEW_RESET_STB://智能卡状态更新,请重启
        update_ca_message(IDS_CA_STATUS_RENEW);
        break;
      case CAS_E_CARD_AUTHEN_OVERDUE:
        OS_PRINTF("CAS_E_CARD_AUTHEN_OVERDUE\n");
        update_ca_message(IDS_CA_SW1SW2_EXPIRED);
        break;
      case CAS_E_CARD_DATA_GET:// 智能卡数据错误
        OS_PRINTF("智能卡数据错误!\n");      
        update_ca_message(IDS_CA_CARD_DATA_ERROR);
        break;
      case CAS_E_ILLEGAL_CARD://智能卡通信错误
        OS_PRINTF("智能卡通信错误!\n");
        update_ca_message(IDS_CA_CARD_IC_CMD_ERROR);
        break;
      case CAS_C_USERCDN_LIMIT_CTRL_ENABLE://该用户被条件限播
        OS_PRINTF("该用户被条件限播!\n");
        update_ca_message(IDS_CAS_E_CARD_CONDITIONAL_LIMIT);
        break;
      case CAS_E_CARD_OPERATE_FAILE://智能卡操作失败
        OS_PRINTF("智能卡操作失败!\n");
        update_ca_message(IDS_CA_OPERATE_CARD_FAIL);
        break;
      case CAS_E_AUTHEN_EXPIRED://有节目授权已经过期,请及时续费
        OS_PRINTF("有节目授权已经过期,请及时续费\n");
        if(ui_is_fullscreen_menu(fw_get_focus_id()))
        {
           manage_open_menu(ROOT_ID_CA_ENTITLE_EXP_DLG, CAS_E_AUTHEN_EXPIRED, 0);
        }
        break;
      default:
        ui_set_ecm_msg(FALSE);
        OS_PRINTF("on_ca_message_update : ui_get_curpg_scramble_flag == 1  default : event_id = [%d]\n",event_id);
        break;
      }
  }
  else
  {
    g_ca_last_msg = INVALID_U32;
  }
  return SUCCESS;
}