コード例 #1
0
ファイル: main.c プロジェクト: aareschluchtje/C-programming
/*-------------------------------------------------------------------------*/
THREAD(StartupInit, arg)
{
    NutThreadSetPriority(5);

    NetworkInit();

    initialized = true;

    NutThreadExit();
}
コード例 #2
0
ファイル: network.cpp プロジェクト: paud/d2x-xl
int NetworkStartGame (void)
{
	int i, bAutoRun;

if (gameStates.multi.nGameType >= IPX_GAME) {
	Assert (FRAME_INFO_SIZE < DATALIMIT);
	if (!networkData.bActive) {
		ExecMessageBox (NULL, NULL, 1, TXT_OK, TXT_IPX_NOT_FOUND);
		return 0;
		}
	}

NetworkInit ();
ChangePlayerNumTo (0);
if (NetworkFindGame ()) {
	ExecMessageBox (NULL, NULL, 1, TXT_OK, TXT_NET_FULL);
	return 0;
	}
bAutoRun = InitAutoNetGame ();
if (0 > (i = NetworkGetGameParams (bAutoRun)))
	return 0;
gameData.multiplayer.nPlayers = 0;
netGame.difficulty = gameStates.app.nDifficultyLevel;
netGame.gameMode = mpParams.nGameMode;
netGame.gameStatus = NETSTAT_STARTING;
netGame.nNumPlayers = 0;
netGame.nMaxPlayers = gameData.multiplayer.nMaxPlayers;
netGame.nLevel = mpParams.nLevel;
netGame.protocolVersion = MULTI_PROTO_VERSION;
strcpy (netGame.szGameName, mpParams.szGameName);
networkData.nStatus = NETSTAT_STARTING;
// Have the network driver initialize whatever data it wants to
// store for this netgame.
// For mcast4, this randomly chooses a multicast session and port.
// Clients subscribe to this address when they call
// IpxHandleNetGameAuxData.
IpxInitNetGameAuxData (netGame.AuxData);
NetworkSetGameMode (netGame.gameMode);
d_srand (TimerGetFixedSeconds ());
netGame.nSecurity = d_rand ();  // For syncing Netgames with tPlayer packets
if (NetworkSelectPlayers (bAutoRun)) {
	StartNewLevel (netGame.nLevel, 0);
	ResetAllPlayerTimeouts ();
	return 1;
	}
else {
	gameData.app.nGameMode = GM_GAME_OVER;
	return 0;
	}
}
コード例 #3
0
ファイル: tracker.cpp プロジェクト: paud/d2x-xl
int CTracker::Query (void)
{
	CMenu	menu (3);
	int	i;

NetworkInit ();
if (!RequestServerList ())
	return 0;
menu.AddGauge ("                    ", -1, 1000); 
menu.AddText ("", 0);
menu.AddText ("(Press Escape to cancel)", 0);
menu.Top ()->m_bCentered = 1;
nQueryTimeout = SDL_GetTicks ();
do {
	i = menu.Menu (NULL, "Looking for Trackers", TrackerPoll);
	} while (i >= 0);
return i;
}
コード例 #4
0
ファイル: MQTTEcho.c プロジェクト: espressif/ESP8266_RTOS_SDK
static void mqtt_client_thread(void *pvParameters)
{
    char *payload = NULL;
    MQTTClient client;
    Network network;
    int rc = 0;
    char clientID[32] = {0};
    uint32_t count = 0;

    ESP_LOGI(TAG, "ssid:%s passwd:%s sub:%s qos:%u pub:%s qos:%u pubinterval:%u payloadsize:%u",
             CONFIG_WIFI_SSID, CONFIG_WIFI_PASSWORD, CONFIG_MQTT_SUB_TOPIC,
             CONFIG_DEFAULT_MQTT_SUB_QOS, CONFIG_MQTT_PUB_TOPIC, CONFIG_DEFAULT_MQTT_PUB_QOS,
             CONFIG_MQTT_PUBLISH_INTERVAL, CONFIG_MQTT_PAYLOAD_BUFFER);

    ESP_LOGI(TAG, "ver:%u clientID:%s keepalive:%d username:%s passwd:%s session:%d level:%u",
             CONFIG_DEFAULT_MQTT_VERSION, CONFIG_MQTT_CLIENT_ID,
             CONFIG_MQTT_KEEP_ALIVE, CONFIG_MQTT_USERNAME, CONFIG_MQTT_PASSWORD,
             CONFIG_DEFAULT_MQTT_SESSION, CONFIG_DEFAULT_MQTT_SECURITY);

    ESP_LOGI(TAG, "broker:%s port:%u", CONFIG_MQTT_BROKER, CONFIG_MQTT_PORT);

    ESP_LOGI(TAG, "sendbuf:%u recvbuf:%u sendcycle:%u recvcycle:%u",
             CONFIG_MQTT_SEND_BUFFER, CONFIG_MQTT_RECV_BUFFER,
             CONFIG_MQTT_SEND_CYCLE, CONFIG_MQTT_RECV_CYCLE);

    MQTTPacket_connectData connectData = MQTTPacket_connectData_initializer;

    NetworkInit(&network);

    if (MQTTClientInit(&client, &network, 0, NULL, 0, NULL, 0) == false) {
        ESP_LOGE(TAG, "mqtt init err");
        vTaskDelete(NULL);
    }

    payload = malloc(CONFIG_MQTT_PAYLOAD_BUFFER);

    if (!payload) {
        ESP_LOGE(TAG, "mqtt malloc err");
    } else {
        memset(payload, 0x0, CONFIG_MQTT_PAYLOAD_BUFFER);
    }

    for (;;) {
        ESP_LOGI(TAG, "wait wifi connect...");
        xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);

        if ((rc = NetworkConnect(&network, CONFIG_MQTT_BROKER, CONFIG_MQTT_PORT)) != 0) {
            ESP_LOGE(TAG, "Return code from network connect is %d", rc);
            continue;
        }

        connectData.MQTTVersion = CONFIG_DEFAULT_MQTT_VERSION;

        sprintf(clientID, "%s_%u", CONFIG_MQTT_CLIENT_ID, esp_random());

        connectData.clientID.cstring = clientID;
        connectData.keepAliveInterval = CONFIG_MQTT_KEEP_ALIVE;

        connectData.username.cstring = CONFIG_MQTT_USERNAME;
        connectData.password.cstring = CONFIG_MQTT_PASSWORD;

        connectData.cleansession = CONFIG_DEFAULT_MQTT_SESSION;

        ESP_LOGI(TAG, "MQTT Connecting");

        if ((rc = MQTTConnect(&client, &connectData)) != 0) {
            ESP_LOGE(TAG, "Return code from MQTT connect is %d", rc);
            network.disconnect(&network);
            continue;
        }

        ESP_LOGI(TAG, "MQTT Connected");

#if defined(MQTT_TASK)

        if ((rc = MQTTStartTask(&client)) != pdPASS) {
            ESP_LOGE(TAG, "Return code from start tasks is %d", rc);
        } else {
            ESP_LOGI(TAG, "Use MQTTStartTask");
        }

#endif

        if ((rc = MQTTSubscribe(&client, CONFIG_MQTT_SUB_TOPIC, CONFIG_DEFAULT_MQTT_SUB_QOS, messageArrived)) != 0) {
            ESP_LOGE(TAG, "Return code from MQTT subscribe is %d", rc);
            network.disconnect(&network);
            continue;
        }

        ESP_LOGI(TAG, "MQTT subscribe to topic %s OK", CONFIG_MQTT_SUB_TOPIC);

        for (;;) {
            MQTTMessage message;

            message.qos = CONFIG_DEFAULT_MQTT_PUB_QOS;
            message.retained = 0;
            message.payload = payload;
            sprintf(payload, "message number %d", ++count);
            message.payloadlen = strlen(payload);

            if ((rc = MQTTPublish(&client, CONFIG_MQTT_PUB_TOPIC, &message)) != 0) {
                ESP_LOGE(TAG, "Return code from MQTT publish is %d", rc);
            } else {
                ESP_LOGI(TAG, "MQTT published topic %s, len:%u heap:%u", CONFIG_MQTT_PUB_TOPIC, message.payloadlen, esp_get_free_heap_size());
            }

            if (rc != 0) {
                break;
            }

            vTaskDelay(CONFIG_MQTT_PUBLISH_INTERVAL / portTICK_RATE_MS);
        }

        network.disconnect(&network);
    }

    ESP_LOGW(TAG, "mqtt_client_thread going to be deleted");
    vTaskDelete(NULL);
    return;
}
コード例 #5
0
/**
  * @brief  Callback routine of the VNC dialog
  * @param  pMsg: pointer to data structure of type WM_MESSAGE
  * @retval None
  */
static void _cbDialog_VNC(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int Id, NCode;
  
  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    /* Initialization of 'Multi Edit' */
    hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC);
    MULTIEDIT_SetReadOnly(hItem, 1);
    MULTIEDIT_SetBkColor(hItem, 1, 0);
    MULTIEDIT_SetTextColor(hItem, 1, 0xFFFFFF);

    /* Initialization of 'Image 1' */
    hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_PCNETWORK);
    IMAGE_SetBitmap(hItem, &bmpc_network64);

    /* Initialization of 'Image 2' */
    hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE);
    IMAGE_SetBitmap(hItem, &bmDelete32);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP);
    TEXT_SetFont(hItem, GUI_FONT_13B_1);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP_STATE);
    TEXT_SetFont(hItem, GUI_FONT_8_ASCII);
    TEXT_SetTextColor(hItem, GUI_BLACK);

    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR);
    TEXT_SetFont(hItem, GUI_FONT_13B_1);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR_VALUE);
    TEXT_SetFont(hItem, GUI_FONT_8_ASCII);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK);
    TEXT_SetFont(hItem, GUI_FONT_13B_1);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK_VALUE);
    TEXT_SetFont(hItem, GUI_FONT_8_ASCII);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR);
    TEXT_SetFont(hItem, GUI_FONT_13B_1);
    TEXT_SetTextColor(hItem, GUI_BLACK);
    
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR_VALUE);
    TEXT_SetFont(hItem, GUI_FONT_8_ASCII);
    TEXT_SetTextColor(hItem, GUI_BLACK); 
    
    /* Restore VNC settings */
    _VNCServer_RestoreSettings();
    
    if (VNCSettings.maskaddr.b.addr3 != 255)
    {
      VNCSettings.dhcp_use.b.dhcp = 1;
      VNCSettings.ipaddr.b.addr0 = 0;
      VNCSettings.ipaddr.b.addr1 = 0;
      VNCSettings.ipaddr.b.addr2 = 0;
      VNCSettings.ipaddr.b.addr3 = 0;
      VNCSettings.maskaddr.b.addr0 = 0;
      VNCSettings.maskaddr.b.addr1 = 0;
      VNCSettings.maskaddr.b.addr2 = 0;
      VNCSettings.maskaddr.b.addr3 = 0;
      VNCSettings.gwaddr.b.addr0 = 0;
      VNCSettings.gwaddr.b.addr1 = 0;
      VNCSettings.gwaddr.b.addr2 = 0;
      VNCSettings.gwaddr.b.addr3 = 0;
      
      /* Save VNC settings */
      _VNCServer_SaveSettings();
    }
    else
    {
      _VNCApp_GetIPAddress(IP_ADDRESS, VNCSettings.ipaddr.b.addr3, VNCSettings.ipaddr.b.addr2, VNCSettings.ipaddr.b.addr1, VNCSettings.ipaddr.b.addr0);
      _VNCApp_GetIPAddress(SUBNET_MASK, VNCSettings.maskaddr.b.addr3, VNCSettings.maskaddr.b.addr2, VNCSettings.maskaddr.b.addr1, VNCSettings.maskaddr.b.addr0);
      _VNCApp_GetIPAddress(GW_ADDRESS, VNCSettings.gwaddr.b.addr3, VNCSettings.gwaddr.b.addr2, VNCSettings.gwaddr.b.addr1, VNCSettings.gwaddr.b.addr0);
    }     
    
    if (VNCSettings.dhcp_use.b.dhcp == 0)
    {
       _VNCServer_DisplayIPAddress();
    }
    
    
    break;

  case WM_PAINT:
    
    DrawRect3D(230, 5, 87, 120);  
    DrawRect3D(2, 130, 225, 80);
    DrawRect3D(230, 130, 87, 80);
    
    break;
      
  case WM_NOTIFY_PARENT:
      Id    = WM_GetId(pMsg->hWinSrc);    /* Id of widget */
    NCode = pMsg->Data.v;               /* Notification code */
    
    switch (NCode) 
    {    
      
    case WM_NOTIFICATION_RELEASED:      /* React only if released */
      switch (Id) 
      {
      case ID_BUTTON_SETTINGS: /* Settings */
        if(hWinVNC_Settings == 0)
        {
          hWinVNC_Settings = GUI_CreateDialogBox(_aDialog_VNC_SETTINGS, GUI_COUNTOF(_aDialog_VNC_SETTINGS), _cbDialog_VNC_SETTINGS, hWinVNC, 0, 10);
          
          hNumPad = GUI_CreateDialogBox(_aDialogNumPad, 
                                        GUI_COUNTOF(_aDialogNumPad), 
                                        _cbDialogNumPad, pMsg->hWin, 0, 0); 
        }
        break;	  
      case ID_BUTTON_START: /* Start */
        
        if(hWinVNC_Settings == 0)
        {
          if (start_button == VNC_START) 
          {          
            /* change start button to hide */
            start_button = VNC_HIDE;
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_START);
            BUTTON_SetText(hItem, (const char*) "Hide");
            
            /* Cange connection png pic from disconnected to connecting */
            hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE);
            IMAGE_SetBitmap(hItem, &bmhourglass32);
            
            
            hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC);
            MULTIEDIT_AddText(hItem, (const char *) "TCP/IP stack initialization ... \n\r");
            
            TCPIP_Initialized = 1;
            
            /* Initilaize the LwIP stack */
            NetworkInit(VNCSettings.dhcp_use.b.dhcp);
          }
          else /* start_button == VNC_HIDE  */
          {
            if(hWinVNC_Settings == 0)
            {        
              WM_HideWindow(pMsg->hWin);
            }
          }
        }
        break;
      }
      break;  
    }
    break;
    
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
コード例 #6
0
ファイル: logic_appinit.c プロジェクト: ZakaryWu/iteIndoor
/*************************************************
  Function:		logic_init
  Description: 	逻辑初始化
  Input: 		无			
  Output:		无
  Return:		无
*************************************************/ 
void logic_init(void)
{
	PFULL_DEVICE_NO pDevNo = NULL;
	PNET_PARAM pNetParam = NULL;

	init_auTimer();        							// 初始化定时器
	init_timer();
	storage_init();									// 初始化存储模块
	init_list_address();							// 初始化监视列表
	ScreenInit();
	NetworkInit();
	
	#ifdef _JD_MODE_
	jd_logic_init();								// 如有家电模块可以不启动看门狗,家电轮巡命令可以喂狗	
	//#else	
	hw_start_com_dog();								// 启动串口看门狗
	#endif
	
	#ifdef _DOOR_PHONE_
	init_ioctrl_callback(analog_callin_io);
	hw_switch_digit();								// 切换到数字通路
	#endif
	init_keypad_probe();							// 按键侦测
	alarm_logic_init();	
	media_init();
	sys_init_hint_state();	
	alarm_init_gui_callback((ALARMGUI_CALLBACK)af_callback_gui, (SHOW_SYSEVENHIT)show_sys_event_hint);
	inter_call_ini(callrequest_state_callbak, callout_state_callbak, callin_state_callbak);
	monitor_ini(monitor_list_state_callbak, monitor_state_callbak);
	rtsp_ini(rtsp_list_state_callbak, rtsp_state_callbak);
	other_func_callbak_ini();

	net_set_recivedata_func(SSC_INFO, msg_distribute, msg_responsion);
	net_set_recivedata_func(SSC_ALARM, alarm_distribute, alarm_responsion);
	net_set_recivedata_func(SSC_INTERPHONE, inter_distribute, inter_responsion);
	net_set_recivedata_func(SSC_PUBLIC, public_distribute, public_responsion);
	net_set_recivedata_func(SSC_VIDEOMONITORING, rtsp_distribute, rtsp_responsion);
	net_set_recivedata_func(SSC_IPDOORPHONE, netdoor_distribute, netdoor_responsion);
	#ifdef _JD_MODE_	 
	net_set_recivedata_func(SSC_EHOME, jd_net_distribute, jd_net_responsion);
	#endif
	
	pDevNo = storage_get_devparam();
	pNetParam = storage_get_netparam();
	net_start_comm(pDevNo, pNetParam);
	net_send_cmd_packet(NULL, 0, INADDR_BROADCAST, NETCMD_UDP_PORT);

	init_reboot_timer();							// 定时重启设置
	
	#ifdef _USE_NEW_CENTER_
	logic_reg_center_ini();							// 新上位机注册保持
	#endif
	
	#ifdef _NEW_SELF_IPC_
	init_ipc_state();								// add by chenbh 2016-03-09 初始化家居监视列表在线状态值
	#endif
	
	#ifdef _IP_MODULE_
	init_ipmodule();								// IP模块绑定 保持
	#endif

	#ifdef _RTSP_REG_KEEP_			
	init_rtsp_timer();								// 室内主机需要向流媒体服务器保持 
	#endif

	#ifdef _YUYUE_MODE_	
	init_yuyue_timer();								// 预约模块定时器
	#endif


	// 请求时间同步
	uint32 center = storage_get_center_ip();
	set_nethead(G_CENTER_DEVNO, PRIRY_DEFAULT);
	net_direct_send(CMD_REQ_SYN_TIME, NULL, 0, center, NETCMD_UDP_PORT);	

	// 测试校验数据是否正确
	check_sysconfig_ifcorrect(); 					
	dprintf("devno: %s \n", pDevNo->DeviceNoStr);
}
コード例 #7
0
ファイル: Main.c プロジェクト: bochaqos/tol
//int WINAPI WinMain (HINSTANCE hInstance, 
//                    HINSTANCE hPrevInstance, 
//                    LPSTR     lpCmdLine, 
//                    int       nShowCmd)
VOID ServiceStart (DWORD dwArgc, LPTSTR *lpszArgv)
{
char  ConnectionName[15];
/*------------------------------------------------------------*/
/* Modification: Migration from single thread to multithread  */
/* Create thread calls are changed to _beginthread            */
/* XID on 7-DEC-1998                                          */
/*------------------------------------------------------------*/
// DWORD CreateThreadId;
char  StrAux[128];
int   CommServerNumber;
int   LoggerRouteId, CommServerRouteId;
char  *pStringSub[2];
BYTE  CommServerRedundant;
BYTE  DBServiceDepending;
BYTE  CommServerPreferred;

  // report the status to the service control manager.
  //
  if (!ReportStatusToSCMgr (SERVICE_START_PENDING, // service state
                            NO_ERROR,              // exit code
                            3000))                 // wait hint
    return;

  /* Create the event to stop the service */
  hStopEvent = CreateEvent (NULL, TRUE, FALSE, NULL);

  /*-----------------*/
  /* Init. procedure */
  /*-----------------*/

  /* Sets process priority (Normal class) */
  SetPriorityClass (GetCurrentProcess (), NORMAL_PRIORITY_CLASS);

  /* Modification: Process parameters are got from system registry */
  /* XID on 16-JUL-1998                                            */

  /* Get the CommServer Number CommServer.Ini */
  //CommServerNumber = GetPrivateProfileInt ("GENERAL", "CommServerId", 0,"CommServer.ini");
  if (!GetParameterRegistry (COMM_NUM_COMMSERVER, (unsigned char *) &CommServerNumber))
  {
    CommServerNumber = 0;
  } /* endif */

  /* Get the redundant configuration from the system registry */
  if (!GetParameterRegistry (COMM_REDUNDANT_CONFIGURATION, (unsigned char *) &CommServerRedundant))
  {
    CommServerRedundant = FALSE;
  } /* endif */
  /* Get the redundant configuration from the system registry */
  if (!GetParameterRegistry (COMM_DBSERVICE_DEPENDING, (unsigned char *) &DBServiceDepending))
  {
    DBServiceDepending = TRUE;
  } /* endif */
  if (!GetParameterRegistry (COMM_COMMSERVER_PREFERRED, (unsigned char *) &CommServerPreferred))
  {
    CommServerPreferred = TRUE;
  } /* endif */

  /*-------------------------------*/
  /* Basic Network init. procedure */
  /*-------------------------------*/

  /* Initialize interproccess communication */
  if (!RouterInit ())
  {
    /* Error */
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_ROUTER_FAILED);
    return;
  } /* endif */

  /* Detailed Logging initialization */
  (void) Log_SetProcessName("CommS");
  (void) Log_SetThreadName("SrvcMain");

  /* Get connection to send logger messages */
  sprintf (ConnectionName, "LOGGER%03u", 0);
  if (!GetConnection (ConnectionName, &LoggerRouteId))
  {
    /* Error */
    pStringSub[0] = ConnectionName;
    AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_GET_CONECTION_ERROR);
    return;
  } /* endif */

  /* Create connection to receive online messages from DBService */
  sprintf (ConnectionName, "COMSERV%03u", CommServerNumber);
  if (!CreateConnection (ConnectionName, &CommServerRouteId))
  {
    /* Error */
    pStringSub[0] = ConnectionName;
    AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_CREATE_CONECTION_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (LoggerRouteId, -1, StrAux, 1);
    return;
  } /* endif */

  /* Start & version message */
  LogWrite (LoggerRouteId, CommServerRouteId, "", 1);
  sprintf (StrAux, CS_LOG_MSG_00036, COMM_SERVER_BUILD_NUMBER, COMM_SERVER_VERSION_DATE);
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  sprintf (StrAux, CS_LOG_MSG_00109);
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  sprintf (StrAux, CS_LOG_MSG_00037);
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  #if defined (HASP_KEY)
    sprintf (StrAux, COMM_SERVER_HASP_ON_STR);
  #else
    sprintf (StrAux, COMM_SERVER_HASP_OFF_STR);
  #endif
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  #if defined (PROT_CONV_LAYER)
    sprintf (StrAux, COMM_SERVER_CONV_ON_STR);
  #else
    sprintf (StrAux, COMM_SERVER_CONV_OFF_STR);
  #endif
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  #if defined (PROT_ENCRYPTION)
    sprintf (StrAux, COMM_SERVER_ENC_ON_STR);
  #else
    sprintf (StrAux, COMM_SERVER_ENC_OFF_STR);
  #endif
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  #if defined (PROT_COMPRESSION)
    sprintf (StrAux, COMM_SERVER_COMP_ON_STR);
  #else
    sprintf (StrAux, COMM_SERVER_COMP_OFF_STR);
  #endif
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  /* Commserver Id */
  sprintf (StrAux, CS_LOG_MSG_00110, CommServerNumber);
  LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
  LogWrite (LoggerRouteId, CommServerRouteId, "", 1);

  /* Redundant configuration */
  if (CommServerRedundant)
  {
    sprintf (StrAux, CS_LOG_MSG_00125);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    sprintf (StrAux, CS_LOG_MSG_00124
             ,CommServerPreferred
             ,DBServiceDepending);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    LogWrite (LoggerRouteId, CommServerRouteId, "", 1);
  } /* endif */
  
  /* Set input buffer size for this route.    */
  /* This input buffer has to be large enough */
  /* to receive all the incomming messages    */
  SetInputBufferSize (CommServerRouteId, COMMSERVER_CONNECTION_INPUT_BUFFER_SIZE);

  /*---------------------*/
  /* DB access semaphore */
  /*---------------------*/

  if (!InitDBSection ())
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00038);
    printf ("%s\n", StrAux);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    //AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
    //                 EVLG_COMMSERVER_MAP_MEMORY_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    return;
  } /* endif */


  /*--------------------*/
  /* Map channel memory */  
  /*--------------------*/

  if (InitChannelMapData () != STATUS_OK)
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00039);
    printf ("%s\n", StrAux);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_COMMSERVER_MAP_MEMORY_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Reset CommServer database */
  ResetDB ();

  /* Assign comm. server id. and basic routes */
  DB_PROCESS.CommServerNumber  = CommServerNumber;
  DB_PROCESS.LoggerRouteId     = LoggerRouteId;
  DB_PROCESS.CommServerRouteId = CommServerRouteId;

  /* CommServer redundancy initial state */
  DB_PROCESS.CommServerPartnerState = PROCESS_STATE_NORUNNING;
  DB_PROCESS.CommServerState        = PROCESS_STATE_NORUNNING;
  DB_PROCESS.DBServiceDepending     = DBServiceDepending;
  DB_PROCESS.CommServerPreferred    = CommServerPreferred;

  #if defined (HASP_KEY)
    /* Default hasp check */
    DB_PROCESS.HaspPresent = TRUE;
  #endif

  /*-------------*/
  /* MGL license */
  /*-------------*/
  
  MGL_ReadLicense ();

  /*------------------------*/
  /* Compression algorithms */
  /*------------------------*/

  Util_SplayTreeCompressInit (NULL);
  Util_SplayTreeUncompressInit (NULL);

  /*--------------------------*/
  /* Process critical secions */
  /*--------------------------*/

  InitializeCriticalSection (&DB_PROCESS.CSFreeChannels);
  InitializeCriticalSection (&DB_PROCESS.CSFreeNetworkThreads);
  InitializeCriticalSection (&DB_PROCESS.CSModifyCfg);

  /*---------------------------*/
  /* Other Network connections */
  /*---------------------------*/

  /* Get connection to send message to DBService */
  sprintf (ConnectionName, "DBCOMM%03u", 0);
  if (!GetConnection (ConnectionName, &DB_PROCESS.DBServiceRouteId))
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    pStringSub[0] = ConnectionName;
    AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_GET_CONECTION_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Get connection to send confirm messages */
  sprintf (ConnectionName, "DBCONF%03u", 0);
  if (!GetConnection (ConnectionName, &DB_PROCESS.DBConfirmRouteId))
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    pStringSub[0] = ConnectionName;
    AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_GET_CONECTION_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Get connection to send confirm messages */
  sprintf (ConnectionName, "DBSEQ%03u", 0);
  if (!GetConnection (ConnectionName, &DB_PROCESS.DBSeqRouteId))
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    pStringSub[0] = ConnectionName;
    AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_GET_CONECTION_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Initialize Network layer */
  if (!NetworkInit ())
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00042);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_COMMSERVER_NETWORK_LAYER_INIT_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /*------------------*/
  /* Threads creation */
  /*------------------*/

  /*------------------------------------------------------------*/
  /* Modification: Migration from single thread to multithread  */
  /* Create thread calls are changed to _beginthread            */
  /* XID on 7-DEC-1998                                          */
  /*------------------------------------------------------------*/
  /* Create thread to receive messages from the DbService */
  // if (CreateThread (NULL, MAX_STACK, (LPTHREAD_START_ROUTINE) HostToTermThread, 
  //                   (LPVOID) NULL, 0, &CreateThreadId) == NULL)
  if (_beginthread (HostToTermThread, MAX_STACK, (LPVOID) NULL) == -1)
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00043);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_CREATE_THREAD_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Create thread to check channels integrity */
  // if (CreateThread (NULL, MAX_STACK, (LPTHREAD_START_ROUTINE) CheckChannelsThread, 
  //                   (LPVOID) NULL, 0, &CreateThreadId) == NULL)
  if (_beginthread (CheckChannelsThread, MAX_STACK, (LPVOID) NULL) == -1)
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00045);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_STD_CREATE_THREAD_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* If the redundancy is configured create the failover thread */
  if (CommServerRedundant)
  {
    if (_beginthread (FailOverThread, MAX_STACK, (LPVOID) NULL) == -1)
    {
      /* Error */
      sprintf (StrAux, CS_LOG_MSG_00045);
      LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
      AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                       EVLG_STD_CREATE_THREAD_ERROR);
      sprintf (StrAux, CS_LOG_MSG_00035);
      LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
      return;
    } /* endif */
  }
  else
  {
    /* In not redundancy case it is always active */
    DB_PROCESS.CommServerState = PROCESS_STATE_ACTIVE;
  } /* endif */

  /*--------------------------*/
  /* CommServer configuration */
  /*--------------------------*/

  /* Offline parameters */
  if (!ReadOfflineDir ())
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00046);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_COMMSERVER_OFFLINE_DIR_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  /* Configuration message */
  sprintf (StrAux, CS_LOG_MSG_00047);
  LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 5);

  // report the status to the service control manager.
  //
  if (!ReportStatusToSCMgr (SERVICE_RUNNING,       // service state
                            NO_ERROR,              // exit code
                            3000))                    // wait hint
  {
    sprintf (StrAux, CS_LOG_MSG_00048);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    return;
  } /* endif */

  // XID on 17/OCT/2002
  // X25 support
  X25_Init ();

  /* Start message */
  AddToMessageLog (NULL, 0, EVENTLOG_INFORMATION_TYPE, SC_SYSTEM,
                   EVLG_STD_SERVICE_STARTED);

  /* Get configuration from DBService */
  if (!RemoteConfiguration ())
  //if (!ConfigureApp ())
  {
    /* Error */
    sprintf (StrAux, CS_LOG_MSG_00049);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);
    AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM,
                     EVLG_COMMSERVER_LOAD_CONFIG_ERROR);
    sprintf (StrAux, CS_LOG_MSG_00035);
    LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1);

    /* Write the last status in the system registry */
    if (CommServerRedundant)
    {
      GetStatusFromPartnerStatus (PROCESS_STATE_NORUNNING,
                                  DB_PROCESS.CommServerState,
                                  DB_PROCESS.CommServerPartnerState);
    }  /* endif */

    return;
  } /* endif */

  /* Sets main thread to idle priority */
  SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);

  /* Configuration message */
  sprintf (StrAux, CS_LOG_MSG_00050);
  LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 5);

  /*-----------------------------*/
  /* Wait for the the stop event */
  /*-----------------------------*/

  WaitForSingleObject (hStopEvent, INFINITE);
  LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, CS_LOG_MSG_00051, 1);

  /* Write the last status in the system registry */
  if (CommServerRedundant)
  {
    GetStatusFromPartnerStatus (PROCESS_STATE_NORUNNING,
                                DB_PROCESS.CommServerState,
                                DB_PROCESS.CommServerPartnerState);
  } /* endif */

  AddToMessageLog (NULL, 0, EVENTLOG_INFORMATION_TYPE, SC_SYSTEM,
                   EVLG_STD_SERVICE_STOPPED);

  return;

} /* main */