📄 mones.cpp
字号:
/*!
\file mones.cpp
\brief Code:Mones儊僀儞
Copyright (c) 2004 Yamami
All rights reserved.
License=MIT/X Licnese
\author Yamami
\version $Revision: 1.3 $
\date create:2004/08/08 update:$Date: 2004/10/31 14:29:43 $
*/
//偙偙偱丄Mones偺僌儘乕僶儖僆僽僕僃僋僩傪僀儞僗僞儞僗壔偡傞
#define MONES_GLOBAL_VALUE_DEFINED
#include "MonesGlobal.h"
#include <monapi.h>
#include "AbstractMonic.h"
#include "MoEther.h"
#include "MonesConfig.h"
#include "MonesLoader.h"
using namespace MonAPI;
/*!
\brief MonaMain
Code:Mones儊僀儞
\param List<char*>* pekoe
\author Yamami
\date create:2004/08/08 update:2004/10/31
*/
int MonaMain(List<char*>* pekoe)
{
int ret;
//syscall_get_io
//偙偺僾儘僙僗摦嶌拞偼丄IO傪摿尃儗儀儖3傑偱嫋壜偡傞
syscall_get_io();
// NIC偺僀儞僗僞儞僗壔
// MonesLoader僋儔僗宱桼偱僀儞僗僞儞僗壔偡傞丅
AbstractMonic* insAbstractNic;
MonesLoader* insNicLoader = new MonesLoader();
insNicLoader->setup();
insAbstractNic = insNicLoader->getNicInstance();
//NIC偺儘乕僪偵幐攕偟偨応崌偼丄Mones廔椆
if(insAbstractNic == 0){
printf("NIC Error Mones Quit \n");
return 0;
}
//Ne2000MoNic* insAbstractNic = new Ne2000MoNic();
//Ether僋儔僗偺僀儞僗僞儞僗壔
g_MoEther = new MoEther();
g_MoEther->etherInit(insAbstractNic);
//ARP僋儔僗偺僀儞僗僞儞僗壔
g_MoArp = new MoArp();
g_MoArp->initArp(insAbstractNic);
//IP僋儔僗偺僀儞僗僞儞僗壔
g_MoIp = new MoIp();
g_MoIp->initIp(insAbstractNic);
// initilize destination list
//List<dword>* destList = new HList<dword>();
MessageInfo info;
// Server start ok
dword targetID = Message::lookupMainThread("MONITOR.BIN");
if (targetID == 0xFFFFFFFF)
{
printf("Mones:INIT not found\n");
exit(1);
}
// create message
Message::create(&info, MSG_SERVER_START_OK, 0, 0, 0, NULL);
// send
if (Message::send(targetID, &info)) {
printf("Mones:INIT error\n");
}
//僱僢僩儚乕僋偺IRQ儅僗僋Enable
insAbstractNic->enableNetWork();
//IRQ儗僔乕僶偲偟偰搊榐 (IRQ偼丄NIC僪儔僀僶僋儔僗傛傝摼傞)
syscall_set_irq_receiver(insAbstractNic->getNicIRQ());
//Yamami 僨僶僢僌
//FileOutputStream fos("MONES.LOG", true);
//printf("open=%x\n", fos.open());
//char logStr[1024]; //儘僌弌椡暥帤楍
/* Message loop */
//偙偙偱儊僢僙乕僕儖乕僾
for (;;)
{
/* receive */
if (!Message::receive(&info))
{
switch(info.header)
{
case MSG_INTERRUPTED:
//printf("MSG_INTERRUPTED\n");
dword i;
//僷働僢僩庴怣
insAbstractNic->frame_input();
//Ether僋儔僗偵搊榐
i = g_MoEther->setEtherFrame(insAbstractNic->frame_buf ,insAbstractNic->frame_len);
//僀乕僒僱僢僩僼儗乕儉庴怣張棟
i = g_MoEther->receiveEther();
break;
//Yamami!! 僷働僢僩憲怣張棟丄枹幚憰
//case MSG_NET_PACKET_SEND:
//僷働僢僩憲怣
//僥僗僩 帺屓MAC傾僪儗僗傊弌椡張棟
// insAbstractNic->frame_output( (byte *)ne_test_pattern, ether_mac_addr, ne_sizeof_test_pattern, 0x0806 );
//儂僗僩傾僪儗僗傊弌椡張棟
// insAbstractNic->frame_output( (byte *)ne_test_pattern, dest_ether_mac_addr, ne_sizeof_test_pattern, 0x0806 );
//break;
default:
/* igonore this message */
break;
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -