2/2
Mediator Layer changes on bicep1
copy the masd directory from spudws2 over to bicep1
Edit Mediator Layer files.
Change NetMsg::packAntGreetingMsg(). Trace this through:
util/NetMsgHandler:
Old Methods
- void packGreetingMsg() -> FIXED
util/common/NetMsgHandler.cc : x
util/common/NetMsg.h : x
mediator/AntennaConsumerNormal.cc : x
mediator/MceConsumer.cc : x
mediator/AntennaControl.cc -> DONE : x
mediator/MceControl.cc -> DONE : x
- void packNetMsg() -> FIXED
masd/MasdControl.h, .cc : x
antenna/control/AntennaControl.h, .cc : x
util/common/NetMsgHandler.cc : x
util/common/NetCommHandler.cc : x
mediator/Control.h, cc : x
grabber/common/Control.h, cc : x
- nssID sendNetMsg() -> FIXED
masd/MasdControl.cc : x
antenna/control/AntennaControl.cc : x
util/common/NetMsgHandler.h, cc -> DONE : x
util/common/NetCommHandler.h, cc : x
mediator/AntennaConsumerNormal.cc : x
mediator/MceConsumer.cc : x
mediator/Control.cc : x
- void readNetMsg() -> FIXED
masd/MasdControl.cc : x
antenna/control/AntennaControl.cc : x
util/common/NetMsgHandler.h, .cc : x
util/common/NetCommHandler.h, .cc : x
mediator/AntennaConsumerNormal.cc : x
mediator/MceConsumer.cc : x
mediator/GrabberControl.h, .cc : x
- void installReadHandler(...)
- void installSendHandler(...)
- void installErrorHandler(...)
- New Methods
- void packAntGreetingMsg() -> DONE
- void packMceGreetingMsg() -> DONE
- packMceIdMsg() -> Done
- packAntNetMsg(NetMsg* msg) -> Done
- sendAntNetMsg() -> Done
- sendMceNetMsg() -> Done
- NET_READ_HANDLER(antReadHandler)
- NET_SEND_HANDLER(antSendHandler)
- NET_ERROR_HANDLER(antErrorHandler)
- NET_READ_HANDLER(mceReadHandler)
- NET_SEND_HANDLER(mceSendHandler)
- NET_ERROR_HANDLER(mceErrorHandler)
mediator/AntennaConsumerNormal::sendGreetingMsg() -> DONE : x
- AntennaConsumerNormal::finalizeConnection() -> DONE : x
mediator/Mceconsumer::sendGreetingMsg() -> DONE : x
- MceConsumer::finalizeConnection() -> DONE : x
mediator/AntennaControl::sendGreetingMsg() -> DONE : x
- AntennaControl::finalizeConnection() -> DONE : x
First write MceControl.h, cc
I need two NetMsgHandler objects, one for antenna and one for masd.
Answer: The NetCommHandlers are part of AntennaControl and MceControl. Thus two sets of handlers are automatically generated.
Need to do:
- put changes in Antenna Layer into projects-gcpBICEP2
2/3
fix NetMsgHandler
Add an enumerator rxType_ to NetMsgHandler, then put switch in appropriate methods.
Undo yesterday's damage:
util/common/NetMsgHandler.cc -> DONE
util/common/NetCommHandler
mediator/AntennaConsumerNormal.cc -> DONE
mediator/AntennaControl -> DONE
mediator/MceControl -> DONE
mediator/MceConsumer -> DONE
modified Method calls:
- NetMsg::packGreetingMsg(...)
Soft link problem and grep
lrwxrwxrwx 1 kstory kstory 7 2009-02-02 07:34 gcp -> ../gcp/
Mediator layer
Need mediator/bicep/MceControlMsg.h, cc
Change all calls to NetMsgHandler constructor. -> ?? I can't find any?!??
antenna/control/AntennaControl.cc -> ok
In mediator/Control: Need communications handlers for both the Antenna and the MASD.
This is taken care of by AntennaControl and MceControl.
Need NetCommHandlers for both Antenna and Mce. New inherited class?
mediator/Control has threads:
- AntennaControl , NetCommHandler, < NetCommHandler >
- GrabberControl , NetCommHandler
- StripControl, < StripCommunicator >
- WxControl, WxCommunicator* , < WxCommunicator::WxData >
- MceControl , NetCommHandler, < NetCommHandler >
All of these have NetCommHandler objects
- NetCommHandler temporaryHandler_
- < NetCommHandler > connectedHandlers_
NetCommHandler has a
- NetMsgHandler
- NetCmdHandler
Idea: put in enum rxType for all three of these.
Maybe later make a class inheritence structure
Potential problems with the Grabber:
NetCommHandler functions:
- packRtcNetCmd() -> ok
- getNetCmdHandler()->getSendFd() -> unmodified
- getNetCmdHandler()->getReadFd() -> unmodified
- readNetMsg() -> unmodified
- sendNetCmd() -> unmodified
- getLastReadNetMsg() -> unmodified
- attach() -> unmodified
- getNetMsgHandler()->installReadHandler() -> unmodified
- getNetMsgHandler()->installErrorHandler() -> unmodified
- getNetMsgHandler()->installSendHandler() -> unmodified
Check NetMsg.h -> ok
add RtcNetCmd field mces -> already done!
Instances of NetCommHandler
Where NetCommHandler is used:
Mediator:
- Control
- AntennaControl
- AntennaConsumerNormal
- GrabberControl
- MceControl
- MceConsumer
Antenna:
- AntennaControl
Masd:
- MasdControl
Grabber:
- Control.h
Instances of NetMsgHandler
Where NetMsgHandler is used:
Mediator:
- Control
- AntennaControl
- AntennaConsumerNormal
- MceControl
- MceConsumer
- GrabberControl
Antenna:
- AntennaControl
- AntennaMonitor
Masd:
- MasdMonitor
- MasdControl
Grabber:
- Control
Instances of NetCmdHandler
Where NetCmdHandler is used:
Mediator:
- Control
- AntennaControl
- AntennaConsumerNormal
- MceControl
- MceConsumer
- GrabberControl
Antenna:
- AntennaControl
Masd:
- MasdControl
Grabber:
- Control
Idea: change body.antenna to body.rx
RtcNetMsg body
Instances of RtcNetCmd
Where RtcNetCmd is used:
- antenna/control/AntNetCmdForwarder
- control/code/unix/control_src/specific/specificscript.c
- control/code/unix/control_src/common/genericcontrol.h
- control/code/unix/control_src/common/genericscript.c
- control/code/unix/control_src/common/navigator.c
- control/code/unix/control_src/common/genericscheduler.c
- control/code/unix/libunix_src/specific/rtcnetcoms.c
- mediator/specific/ControlNetCmdForwarder.cc
- mediator/specific/AntennaNetCmdForwarderNormal.cc
- mediator/specific/AntennaControl.cc
- mediator/specific/AntennaControlMsg.h
- mediator/specific/GrabberControl.cc
- mediator/specific/GrabberNetCmdForwarder.cc
- mediator/specific/GrabberControlMsg.h
- mediator/specific/StripNetCmdForwarder.cc
- mediator/specific/ScannerNetCmdForwarder.cc
- util/specific/AntennaNetCmdForwarder.cc
- util/specific/ArrayNetCmdForwarder.cc
- util/common/NetCommHandler.h
- util/common/NetCmdHandler.h
- util/common/NetCmd.h
Instances of RtcNetMsg
Where RtcNetMsg is used:
- control/code/unix/control_src/specific/specificcontrol.c
- control/code/unix/control_src/common/NewRtcNetMsg.c
- control/code/unix/control_src/common/genericcontrol.h
- control/code/unix/control_src/common/NewRtcNetMsg.h
- control/code/unix/control_src/common/genericscheduler.c
- control/code/unix/libunix_src/specific/rtcnetcoms.c
- util/common/NetCommHandler.h
- util/common/NetMsgHandler.cc
- util/common/NewRtcNetMsg.h
Create svn directory
kstory@bicep1:~$ svnadmin create svnRepos/
kstory@bicep1:~$ svn import gcp/ file:///home/kstory/svnRepos/gcp
kstory@bicep1:~$ svn co file:///home/kstory/svnRepos/gcp
$ svn propedit svn:ignore ./
In file, type
html
This ignores the html/ directory with svn.
Class ideas from Tom
NetMsgBase -> packGreeting() = 0 ?
AntNetMsg : NetMsgBase
MceNetMsg : MetMsgBase
NetCmdBase.h
AntNetCmd.h : NetCmdBase
AntNetCmd.cc
MceNetCmd.h : NetCmdBase
MceNetCmd.cc
NetCommHandlerBase.h, .cc
AntNetCommHandler.h : NetCommHandlerBase
AntNetCommHandler.cc
MceNetCommHandler.h : NetCommHandlerBase
MceNetCommHandler.cc
NetMsgHandlerBase.h, .cc
AntNetMsgHandler.h : NetMsgHandlerBase
AntNetMsgHandler.cc
Look into NetCommHandler depencdncy on NewRtcNetMsg, NewNetMsg
2/4
Add new stuff to svn:
Add the new files:$ svn status ? gcp/util/common/MceNetCmd.h ? gcp/util/common/MceNetMsg.h ? gcp/util/common/MceNetCommHandler.h ? gcp/util/common/AntNetMsgHandler.h ? gcp/util/common/AntNetCmd.h ? gcp/util/common/MceNetCmd.cc ? gcp/util/common/AntNetMsg.h ? gcp/util/common/AntNetCommHandler.h ? gcp/util/common/NetMsgHandlerBase.cc ? gcp/util/common/AntNetCmd.cc ? gcp/util/common/AntNetMsgHandler.cc ? gcp/util/common/NetMsgBase.h ? gcp/util/common/NetMsgHandlerBase.h ? gcp/util/common/MceNetCommHandler.cc ? gcp/util/common/NetCmdBase.h ? gcp/util/common/NetCommHandlerBase.cc ? gcp/util/common/NetCommHandlerBase.h ? gcp/util/common/AntNetCommHandler.cc $ svn add util/common/MceNetCmd.h $ svn add AntNetCommHandler.h NetMsgHandlerBase.cc AntNetCmd.cc AntNetMsgHandler.cc NetMsgBase.h NetMsgHandlerBase.h MceNetCommHandler.cc NetCmdBase.h NetCommHandlerBase.cc NetCommHandlerBase.h AntNetCommHandler.cc ...Commit the changes
$ svn commit
Try running gcp_1.31 with real sync box
Add initialization stuff to SyncBoard::initialize_bbcpci()
Compiles.
fix a few things.
compiles, runs.
kill walt's running gtkterm
| $ ps aux | grep gtkterm |
(standard input):125:reuben 26993 0.0 0.2 156012 20520 pts/0 S Feb02 0:27 gtkterm
sudo kill 26993
$ sudo gtkterm -p /dev/bbc_sync/
(gtkterm:23017): GLib-CRITICAL : g_string_insert_c: assertion `pos <= string->len' failed
Control signals read: Inappropriate ioctl for device
(gtkterm:23017): GLib-CRITICAL : g_string_insert_c: assertion `pos <= string->len' failed
(gtkterm:23017): GLib-CRITICAL : g_string_insert_c: assertion `pos <= string->len' failed
$ cvs co file:///home/kstory/svnRepos/gcp Copy 3 updated files to current directory. Add them to svn: $ cvs commit DataNew.cc SyncBoard.h SyncBoard.cc
Look into gcp::util::NewRtcNetMsg
MceNetMsgHandler::packNewRtcNetMsg
set to ThrowError -> DONE
AntNetMsg::packAntennaIdMsg()
MceNetMsg::packMceIdMsg()
Done defining classes.
Now look for where these classes are instaniated.
Add second half of Message and Command stuff to svn
$ svn status M antenna/control/bicep/CVS/Entries ? runlogs/bicepTestAntennaControl157 M mediator/bicep/CVS/Entries ? util/common/NetCmdHandlerBase.cc ? util/common/MceNetMsgHandler.cc ? util/common/NetCmdBase.cc ? util/common/MceNetCmdHandler.h ? util/common/NetCmdHandlerBase.h ? util/common/MceNetCmdHandler.cc ? util/common/AntNetCmdHandler.cc ? util/common/AntNetCmdHandler.h ? util/common/MceNetMsgHandler.h M util/common/MceNetCmd.h M util/common/MceNetMsg.h M util/common/MceNetCommHandler.h M util/common/AntNetMsgHandler.h M util/common/AntNetCmd.h M util/common/MceNetCmd.cc M util/common/AntNetMsg.h M util/common/AntNetCommHandler.h M util/common/NetMsgHandlerBase.cc M util/common/AntNetCmd.cc M util/common/AntNetMsgHandler.cc M util/common/NetMsgBase.h M util/common/NetMsgHandlerBase.h M util/common/MceNetCommHandler.cc M util/common/NetCmdBase.h M util/common/NetCommHandlerBase.cc M util/common/NetCommHandlerBase.h M util/common/AntNetCommHandler.ccAdd the necessary files
kstory@bicep1:common$ svn add NetCmdHandlerBase.cc MceNetMsgHandler.cc NetCmdBase.cc MceNetCmdHandler.h NetCmdHandlerBase.h MceNetCmdHandler.cc AntNetCmdHandler.cc AntNetCmdHandler.h MceNetMsgHandler.h A NetCmdHandlerBase.cc A MceNetMsgHandler.cc A NetCmdBase.cc A MceNetCmdHandler.h A NetCmdHandlerBase.h A MceNetCmdHandler.cc A AntNetCmdHandler.cc A AntNetCmdHandler.h A MceNetMsgHandler.hCommit the files
kstory@bicep1:common$ svn commit Sending common/AntNetCmd.cc Sending common/AntNetCmd.h Adding common/AntNetCmdHandler.cc Adding common/AntNetCmdHandler.h Sending common/AntNetCommHandler.cc Sending common/AntNetCommHandler.h Sending common/AntNetMsg.h Sending common/AntNetMsgHandler.cc Sending common/AntNetMsgHandler.h Sending common/MceNetCmd.cc Sending common/MceNetCmd.h Adding common/MceNetCmdHandler.cc Adding common/MceNetCmdHandler.h Sending common/MceNetCommHandler.cc Sending common/MceNetCommHandler.h Sending common/MceNetMsg.h Adding common/MceNetMsgHandler.cc Adding common/MceNetMsgHandler.h Adding common/NetCmdBase.cc Sending common/NetCmdBase.h Adding common/NetCmdHandlerBase.cc Adding common/NetCmdHandlerBase.h Sending common/NetCommHandlerBase.cc Sending common/NetCommHandlerBase.h Sending common/NetMsgBase.h Sending common/NetMsgHandlerBase.cc Sending common/NetMsgHandlerBase.h Transmitting file data ........................... Committed revision 5.
Integrate Msg and Cmd changes into the Mediator
Need
Class MceControlMsg
Class util/bicep/MceNetCmdForwarder -> DONE
Class mediator/bicep/MceNetCmdForwarder -> DONE
Undo bad cvs commit:
kstory@bicep1:bicep$ cvs commit -m "Make compatible with a working Sync Box."
cvs commit: Examining .
cvs commit: Examining Test
kstory@bicep0.caltech.edu's password:
cvs server: /home/bicep0/cvsroot/CVSROOT/config: unrecognized keyword 'UseNewInfoFmtStrings'
? Test/tsync_driver.cc
? Test/tsync_driver
? Test/bbc_sync.h
? Test/.svn
? SyncBoard.h
? SyncBoard.cc
? Makefile.rules
? .svn
Checking in AntennaControl.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaControl.cc,v <-- AntennaControl.cc
new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2
done
Checking in AntennaMaster.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaMaster.cc,v <-- AntennaMaster.cc
new revision: 1.1.2.3.2.4; previous revision: 1.1.2.3.2.3
done
Checking in AntennaMaster.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaMaster.h,v <-- AntennaMaster.h
new revision: 1.1.2.2.2.3; previous revision: 1.1.2.2.2.2
done
Checking in AntennaMonitor.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaMonitor.cc,v <-- AntennaMonitor.cc
new revision: 1.1.2.3.2.1; previous revision: 1.1.2.3
done
Checking in AntennaRx.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaRx.cc,v <-- AntennaRx.cc
new revision: 1.1.2.2.2.3; previous revision: 1.1.2.2.2.2
done
Checking in AntennaRx.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaRx.h,v <-- AntennaRx.h
new revision: 1.1.2.1.2.1; previous revision: 1.1.2.1
done
Checking in CommandTask.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/CommandTask.cc,v <-- CommandTask.cc
new revision: 1.1.2.13.2.4; previous revision: 1.1.2.13.2.3
done
Checking in CommandTask.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/CommandTask.h,v <-- CommandTask.h
new revision: 1.1.2.5.2.3; previous revision: 1.1.2.5.2.2
done
Checking in Data.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/Data.cc,v <-- Data.cc
new revision: 1.1.2.1.2.1; previous revision: 1.1.2.1
done
Checking in DataBase.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/DataBase.cc,v <-- DataBase.cc
new revision: 1.1.2.5.2.4; previous revision: 1.1.2.5.2.3
done
Checking in DataBase.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/DataBase.h,v <-- DataBase.h
new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2
done
Checking in DataNew.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/DataNew.cc,v <-- DataNew.cc
new revision: 1.1.2.9.2.6; previous revision: 1.1.2.9.2.5
done
Checking in DataNew.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/DataNew.h,v <-- DataNew.h
new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2
done
Checking in NetDataBoard.h;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/NetDataBoard.h,v <-- NetDataBoard.h
new revision: 1.1.2.1.2.1; previous revision: 1.1.2.1
done
Checking in bin_AntennaControl.cc;
/home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/bin_AntennaControl.cc,v <-- bin_AntennaControl.cc
new revision: 1.1.2.3; previous revision: 1.1.2.2
done
kstory@bicep1:bicep$ cvs update -j 1.1.2.2.2.1 -j 1.1.2.2 AntennaControl.cc kstory@bicep0.caltech.edu's password: cvs server: /home/bicep0/cvsroot/CVSROOT/config: unrecognized keyword 'UseNewInfoFmtStrings' RCS file: /home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaControl.cc,v retrieving revision 1.1.2.2.2.1 retrieving revision 1.1.2.2 Merging differences between 1.1.2.2.2.1 and 1.1.2.2 into AntennaControl.cc kstory@bicep1:bicep$ cvs commit AntennaControl.cc kstory@bicep0.caltech.edu's password: cvs server: /home/bicep0/cvsroot/CVSROOT/config: unrecognized keyword 'UseNewInfoFmtStrings' Checking in AntennaControl.cc; /home/bicep0/cvsroot/gcp/antenna/control/bicep/Attic/AntennaControl.cc,v <-- AntennaControl.cc new revision: 1.1.2.2.2.2; previous revision: 1.1.2.2.2.1 doneAntennaMaster.cc
# cvs update -j 1.1.2.3.2.4 -j 1.1.2.3.2.3 AntennaMaster.cc $ cvs commit AntennaMaster.ccAntennaMaster.h
$ cvs update -j 1.1.2.2.2.3 -j 1.1.2.2.2.2 AntennaMaster.h $ cvs commit AntennaMaster.hAntennaMonitor.cc
$ cvs update -j 1.1.2.3.2.1 -j 1.1.2.3 AntennaMonitor.cc $ cvs commit AntennaMonitor.ccAntennaRx.cc
$ cvs update -j 1.1.2.2.2.3 -j 1.1.2.2.2.2 AntennaRx.cc $ cvs commit AntennaRx.ccAntennaRx.h
$ cvs update -j 1.1.2.1.2.1 -j 1.1.2.1 AntennaRx.h $ cvs commit AntennaRx.hCommandTask.cc
$ cvs update -j 1.1.2.13.2.4 -j 1.1.2.13.2.3 CommandTask.cc $ cvs commit CommandTask.ccCommandTask.h
$ cvs update -j 1.1.2.5.2.3 -j 1.1.2.5.2.2 CommandTask.h $ cvs commit CommandTask.hData.cc
$ cvs update -j 1.1.2.1.2.1 -j 1.1.2.1 Data.cc $ cvs commit Data.ccDataBase.cc
$ cvs update -j 1.1.2.5.2.4 -j 1.1.2.5.2.3 DataBase.cc $ cvs commit DataBase.ccDataBase.h
$ cvs update -j 1.1.2.2.2.1 -j 1.1.2.2 DataBase.h $ cvs commit DataBase.hDataNew.cc
$ cvs update -j 1.1.2.9.2.6 -j 1.1.2.9.2.5 DataNew.cc $ cvs commit DataNew.ccDataNew.h
$ cvs update -j 1.1.2.2.2.1 -j 1.1.2.2 DataNew.h $ cvs commit DataNew.hNetDataBoard.h
$ cvs update -j 1.1.2.1.2.1 -j 1.1.2.1 NetDataBoard.h $ cvs commit NetDataBoard.hbin_AntennaControl.cc
$ cvs update -j 1.1.2.3 -j 1.1.2.2 bin_AntennaControl.cc $ cvs commit bin_AntennaControl.cc
Check out My current gcp from svn
$ svn co file:///home/kstory/svnRepos/gcp
In NetCommHandler
add new packAntNetCmd, packMceNetCmd,
packAntNetMsg, packMceNetMsg, etc.
For Tomorrow:
Document changes in:
- NetCommHandler
- NetMsgHandler
- NetCmdHandler
- NetMsg
- NetCmd
- rtcnetcoms.h
2/6
svn commit Mediator layer work, revision 9.
$ kstory@bicep1:gcp$ svn commit Sending TAGS Sending antenna/control/bicep/AntennaControl.cc Sending antenna/control/bicep/AntennaMonitor.cc Sending control/code/unix/lib/libtkpanel.a Sending control/code/unix/libunix_src/bicep/rtcnetcoms.h Sending lib/libGcpAntennaControlSpecific.so Sending lib/libGcpGrabberCommon.so Sending masd/bicep/MasdControl.cc Sending masd/bicep/MasdControlMsg.h Sending masd/bicep/MasdMasterMsg.h Sending masd/bicep/MasdMonitor.cc Sending mediator/bicep/AntennaConsumerNormal.cc Sending mediator/bicep/AntennaConsumerNormal.h Sending mediator/bicep/AntennaControl.cc Sending mediator/bicep/AntennaControlMsg.h Sending mediator/bicep/Control.cc Sending mediator/bicep/ControlMsg.h Sending mediator/bicep/ControlNetCmdForwarder.cc Sending mediator/bicep/MceConsumer.cc Sending mediator/bicep/MceControl.cc Adding mediator/bicep/MceControlMsg.h Sending mediator/bicep/Scanner.h Sending mediator/bicep/TransNetCmdForwarder.cc Sending util/bicep/AntennaNetCmdForwarder.cc Sending util/bicep/ArrayNetCmdForwarder.cc Sending util/bicep/MceNetCmdForwarder.cc Sending util/common/AntNetCmdHandler.cc Sending util/common/MceNetCmdHandler.cc Sending util/common/NetCmdHandler.cc Sending util/common/NetCmdHandler.h Sending util/common/NetCommHandler.cc Sending util/common/NetCommHandler.h Sending util/common/NetMsg.h Sending util/common/NetMsgBase.h Sending util/common/NetMsgHandler.cc Sending util/common/NetMsgHandler.h Transmitting file data .................................... Committed revision 9.
Move all Comm Base activity to antenna/control/bicep/netcommBase/
Possible Msg Problems
List of possible message problems where we call a generic function where we need a Ant or Mce function:
- NetCmdHandler::packNetCmd()
- NetCmdHandler::sendNetCmd()
- MsgType NET_INIT_CMD
- NET_CMD
- ID
- INIT
"Final" Mediator Layer commit to svn
kstory@bicep1:gcp$ svn commit Sending TAGS Sending antenna/control/bicep/AntennaControlMsg.h Sending antenna/control/bicep/DataMsg.h Sending control/code/unix/libunix_src/bicep/rtcnetcoms.h Sending control/code/unix/libunix_src/bicep/specificregs.c Sending help/registers.html Sending lib/libGcpAntennaControlSpecific.so Sending lib/libGcpControlCommon.so Sending lib/libGcpGrabberCommon.so Sending lib/libGcpMediatorSpecific.so Sending lib/libGcpShareSpecific.so Sending lib/libGcpUtilCommon.so Sending lib/libGcpUtilSpecific.so Sending masd/bicep/DataMsg.h Deleting masd/bicep/MasdData.h Sending masd/bicep/MasdMasterMsg.h Sending masd/bicep/MasdTask.h Sending mediator/bicep/Control.cc Sending mediator/bicep/ControlMsg.h Sending mediator/bicep/MceControl.cc Sending mediator/bicep/MceControl.h Sending mediator/bicep/MceControlMsg.h Sending mediator/bicep/Scanner.h Sending mediator/bicep/TransNetCmdForwarder.cc Sending util/bicep/MceNetCmdForwarder.cc Sending util/bicep/MceNetCmdForwarder.h Deleting util/common/AntNetCmd.cc Deleting util/common/AntNetCmd.h Deleting util/common/AntNetCmdHandler.cc Deleting util/common/AntNetCmdHandler.h Deleting util/common/AntNetCommHandler.cc Deleting util/common/AntNetCommHandler.h Deleting util/common/AntNetMsg.h Deleting util/common/AntNetMsgHandler.cc Deleting util/common/AntNetMsgHandler.h Deleting util/common/MceNetCmd.cc Deleting util/common/MceNetCmd.h Deleting util/common/MceNetCmdHandler.cc Deleting util/common/MceNetCmdHandler.h Deleting util/common/MceNetCommHandler.cc Deleting util/common/MceNetCommHandler.h Deleting util/common/MceNetMsg.h Deleting util/common/MceNetMsgHandler.cc Deleting util/common/MceNetMsgHandler.h Deleting util/common/NetCmdBase.cc Deleting util/common/NetCmdBase.h Sending util/common/NetCmdHandler.cc Sending util/common/NetCmdHandler.h Deleting util/common/NetCmdHandlerBase.cc Deleting util/common/NetCmdHandlerBase.h Deleting util/common/NetCommHandlerBase.cc Deleting util/common/NetCommHandlerBase.h Deleting util/common/NetMsgBase.h Sending util/common/NetMsgHandler.cc Deleting util/common/NetMsgHandlerBase.cc Deleting util/common/NetMsgHandlerBase.h Deleting util/common/NetMsgHandler_2-2.cc Deleting util/common/NetMsgHandler_2-2.h Transmitting file data ............................ Committed revision 10.
2/9
Try to run newly compiled program:
Error 1:
Antenna Layer: FrameNumber = 916277962, iSamp = 48 bufferFrameNumber: Frame number = 916277962 FrameNumber = 916277963, iSamp = 49 bufferFrameNumber: Frame number = 916277963 *** writeFrameNumber: 916277963 Successfully connected 09-FEB-2009 19:20:07.500: In static void* gcp::util::Thread::startThread(void*): Caught an exception in thread: Data (1112443216)): In void gcp::util::AxisRange::setTo(gcp::util::CoordAxes*, gcp::util::CoordRange*): NULL argument(s)
This is from util/common/Thread::startThread()
Another Error 2:
*** writeFrameNumber: 916577477 In void gcp::antenna::control::AntennaControl::parseGreetingMsg(gcp::util::NetMsg*): Register map mismatch wrt host . 09-FEB-2009 19:32:37.009: In static void* gcp::util::Thread::startThread(void*): Caught an exception in thread: AntennaControl (1100507472)): In void gcp::antenna::control::AntennaControl::parseGreetingMsg(gcp::util::NetMsg*): Register map mismatch wrt host . ... FrameNumber = 916577500, iSamp = 22 bufferFrameNSegmentation fault
Look into Error 2.
Error 2.1:
FrameNumber = 916875172, iSamp = 36 msg->body.msg.greeting.nReg != parent_->getShare()->getNreg() bufferFrameNumber: Frame number = 916875172
Idea: the "Data" thread is not initializing properly, and the error message is just taking some time to propagate through the system. Maybe?
In AntennaRx.cc, put back in dataport_
No difference.
Track Error 2.1 backwords.
Problem in antenna/AntennaControl::parseGreeting(NetMsg* msg)
The problem seems to be in how the register maps are defined.
SyncBox registers look the same in specificregs.c as they did in the workingSyncBox version.
I have added mce registers:
static RegBlockTemp bicepMce[] = RBT("mcdRunFileTest"), RBT("mceDataFileTest"), RBT("received")
static RegBoardTemp bicep_antenna_boards[] = {
...
{"syncBox", bicepSyncBox, ARRAY_DIM(bicepSyncBox), {0x0},
"Frame number from the Sync Box and BlastBus PCI card"},
}
static RegBoardTemp bicep_mce_board[] = {
{"mceBoard", bicepMce, ARRAY_DIM(bicepMce), {0x0},
"BICEP mce receiver"},
}
Error 3:
... In void gcp::antenna::control::AntennaMonitor::parseGreetingMsg(gcp::util::NetMsg*): Register map mismatch wrt host *** writeFrameNumber: 918123544
Error is from antenna/AntennaMonitor::parseGreetingMsg()
Mediator Layer Errors
Error 1: on initizlization
09-FEB-2009 20:35:56.000: In virtual void gcp::util::ArrayNetCmdForwarder::forwardNetCmd(gcp::util::NetCmd*): Unknown command: 28received from control program. 09-FEB-2009 20:35:56.232: In virtual void gcp::util::ArrayNetCmdForwarder::forwardNetCmd(gcp::util::NetCmd*): Unknown command: 28received from control program.
This means that in util/bicep/ArrayNetCmdForwarder::ForwardNetCmd(NetCmd), the type was not recognized.
NetCmdId defined as an enum in gcp/control/code/unix/libunix_src/specific/rtcnetcoms.h
I bet it was a "NET_INIT_CMD".
to ArrayNetCmdForwarder::ForwardNetCmd()
add case NET_INIT_CMD
2/10
Mediator Layer Errors (cont)
Related Error 1: on initilization
10-FEB-2009 19:44:37.000: In virtual void gcp::mediator::ControlNetCmdForwarder::forwardNetCmd(gcp::util::NetCmd*): Unrecognized message: id = 28
Add case NET_INIT_CMD to ControlNetCmdForwarder.cc
No more error. Keep thinking about this.
NET_INIT_CMD
Everywhere were NET_INIT_CMD is used:
- control/code/unix/control_src/common/genericcontrol.c in function connect_controller(cp, rtc)
- control/code/unix/control_src/common/NewNetCmd.h, .c in enumerator
- control/code/unix/control_src/common/genericscheduler.c in sch_init_ended_send(Scheduler* sch); -> NEED ANT & MCE OPTIONS
- control/code/unix/libunix_src/specific/rtcnetcoms.h in enum NetCmdId also have NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
- mediator/bicep/ControlNetCmdForwarder.cc in forwardNetCmd(netCmd) also have case NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
- mediator/bicep/TransNetCmdForwarder.cc in forwardNetCmd(netCmd) also have case NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
- util/bicep/AntennaNetCmdForwarder.cc in forwardNetCmd(netCmd) alse have case NET_INIT_ANT_CMD
- util/bicep/ArrayNetCmdForwarder.cc in forwardNetCmd(netCmd) also have case NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
- util/common/NetCmdHandler.cc in readNetCmd(), just a debug statement. also have debug statements for NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
Everywhere were NET_INIT_ANT_CMD is used:
- control/code/unix/libunix_src/bicep/rtcnetcoms.h in enum NetCmdId
- mediator/bicep/ControlNetCmdForwarder.cc in forwardNetCmd(netCmd)
- mediator/bicep/TransNetCmdForwarder.cc in forwardNetCmd(netCmd)
- util/bicep/AntennaNetCmdForwarder.cc in forwardNetCmd(netCmd)
- util/bicep/ArrayNetCmdForwarder.cc in forwardNetCmd(netCmd)
- util/common/NetCmdHandler.cc in readNetCmd(), just a debug statement.
Leave this for now.
Where packNetCmd() is used: Defined:
- util/common/NetCommHandler.h, .cc
- util/common/NetCmdHandler.h, .cc Called:
Check in current version into svn
kstory@bicep1:gcp$ svn commit -m "Fixed NET_INIT_CMD problems" Sending TAGS Sending antenna/control/bicep/AntennaControl.cc Sending antenna/control/bicep/AntennaMonitor.cc Sending antenna/control/bicep/DataBase.cc Sending antenna/control/bicep/DataNew.cc Sending control/code/unix/libunix_src/bicep/specificregs.c Sending help/registers.html Sending lib/libGcpAntennaControlSpecific.so Sending lib/libGcpMediatorSpecific.so Sending lib/libGcpShareSpecific.so Sending lib/libGcpUtilSpecific.so Adding masd/bicep/CommandMsg.h Sending mediator/bicep/ControlNetCmdForwarder.cc Sending mediator/bicep/TransNetCmdForwarder.cc Sending util/bicep/AntennaNetCmdForwarder.cc Sending util/bicep/ArrayNetCmdForwarder.cc Sending util/common/NetCmdHandler.cc Transmitting file data ................. Committed revision 11.
Walt's masutils
$ cvs -d kstory@bicep0.caltech.edu:/home/cvsroot co masutils
MASD layer
Look over old functions:
- MasdMaster.h, .cc
- BicepShare.h, .cc
- CommandMsg.h
- CommandTask.h, .cc
- BicepTask.h, .cc
- Board.h, .cc
- FrameBoard.h, .cc
- MasdControl.h, .cc
- MasdMonitor.h, .cc
2/11
RtcNetCmd: change NetMask receiver
Where does changing the NetMask in RtcNetCmd struct effect anything?- mediator/AntennaControlMsg.h:194 -> ok
- mediator/MceControlMsg.h:194 -> ok
- mediator/StripNetCmdForwarder.cc:34 -> ok
- util/common/NetCmd.cc:35 -> 0k
- util/common/NetCmdHandler.cc:107, 127, 147, 192, 214 -> ok
- control/code/control_src/common/genericcontrol.c:3463, 3598 -> ok
- control/code/libunix_src/common/genericscript.c:1797, 3405, 3469, 3527, 3577, 3641, 3699, 3753, 3806, 3856, 3942, 3986, ..., 5420 -> ok
- control/code/unix/control_src/common/navigator.c:852,...,2353 -> ok
Get rid of NetCmdHandler::packMceNetCmd, readMceNetCmd
RtcNetMsg: change NetUint receiver
Where does changing the NetUint in RtcNetMsg struct effect anything?- util/common/NetMsg.h, 92, 100, 137, 154, 185, 194 -> ok
- util/common/NetMsgHandler.cc:198, ..., 495 -> ok
- mediator/AntennaConsumerNormal.cc, 327, ..., 456 -> ok
- mediator/AntennaControl.cc -> ok
- mediator/MceConsumer.cc -> ok
NewNetMsg: change unsigned int receiver
Where does changint the unsigned int field effect anything?- control/code/unix/control_src/common/genericscheduler.c
Need util/common/MceFrameBuffer.h, .cc
svn commit revision 12
kstory@bicep1:gcp$ svn commit -m "change RtcNetMsg to receiver, add masd Scanner" Sending TAGS Sending antenna/control/bicep/AntennaControl.cc Sending antenna/control/bicep/AntennaMonitor.cc Sending antenna/control/bicep/BicepShare.cc Sending control/code/unix/control_src/common/genericcontrol.c Sending control/code/unix/control_src/common/genericscheduler.c Sending control/code/unix/control_src/common/genericscript.c Sending control/code/unix/control_src/common/navigator.c Sending control/code/unix/libunix_src/bicep/rtcnetcoms.h Sending control/code/unix/libunix_src/bicep/specificregs.c Sending help/registers.html Sending lib/libGcpAntennaControlSpecific.so Sending lib/libGcpControlCommon.so Sending lib/libGcpGrabberCommon.so Sending lib/libGcpMediatorSpecific.so Sending lib/libGcpShareSpecific.so Sending lib/libGcpUtilCommon.so Sending masd/bicep/BicepShare.cc Sending masd/bicep/BicepShare.h Adding masd/bicep/BicepTask.cc Sending masd/bicep/CommandMsg.h Adding masd/bicep/CommandTask.cc Adding masd/bicep/CommandTask.h Sending masd/bicep/Data.cc Sending masd/bicep/Data.h Sending masd/bicep/DataBase.cc Sending masd/bicep/DataBase.h Sending masd/bicep/FrameBoard.cc Sending masd/bicep/FrameBoard.h Sending masd/bicep/MasdControl.cc Sending masd/bicep/MasdControl.h Sending masd/bicep/MasdMaster.cc Sending masd/bicep/MasdMaster.h Sending masd/bicep/MasdMonitor.cc Sending masd/bicep/MasdMonitor.h Sending masd/bicep/MceRx.cc Sending masd/bicep/MceRx.h Adding masd/bicep/Scanner.cc Adding masd/bicep/Scanner.h Sending mediator/bicep/AntennaConsumerNormal.cc Sending mediator/bicep/AntennaControl.cc Sending mediator/bicep/AntennaControlMsg.h Sending mediator/bicep/MceConsumer.cc Sending mediator/bicep/MceControl.cc Sending mediator/bicep/MceControlMsg.h Sending mediator/bicep/StripNetCmdForwarder.cc Adding util/common/MceFrameBuffer.cc Adding util/common/MceFrameBuffer.h Sending util/common/NetCmd.cc Sending util/common/NetCmdHandler.cc Sending util/common/NetCmdHandler.h Sending util/common/NetCommHandler.cc Sending util/common/NetCommHandler.h Sending util/common/NetMsg.h Sending util/common/NetMsgHandler.cc Sending util/common/NetMsgHandler.h Sending util/common/NewRtcNetMsg.cc Sending util/common/NewRtcNetMsg.h Transmitting file data .......................................................... Committed revision 12.
Mce Data system (MceRx thread)
No DataNew!
We already have DataBase and Data.
DataBase --> Data
-> NetDataBoard
-> NetDataParse
How is NetDataBoard used?
DataBase:
- mce_->read_mce_sample(iSamp, dataBoard_)
DataNew:
- dataBoard_->read()
Keep working through NetDataBoard
2/12
Registers in Antenna layer
FrameBoard: registers with info about the Frame. ??
- RegMapBlock* nsnap_, record_, utc_, lst_, features_, markSeq_, walshstate_
NetDataBoard: temp structs for reading out data from the "boxes"
- DataSystemBox* box
- < BoxData > data_
NetDataParse: data registers
- float* cosine, sine, ... tempreature_log,... irCurr
- RegMapBlock* received_, cosine_,... irCurr_
Scanner:
- struct Features
- struct WalshState
- FrameBoard* fb_
DataBase:
- NetDataBoard* data_
- NetDataParse* mce_
Registers in Masd layer
NetDataBoard:
- struct RunFile
- struct DataFile
- struct MceData
NetDataParse:
- float* mceRunFileTest, mceDataFileTest
- uint* slowFrameTest
- RegMapBlock* mceRunFileTest_ mceDataFileTest_, slowFrameTest_
DataBase:
- NetDataBoard* dataBoard_
- NetDataParse* mce_
Scanner: Does not deal with writing registers
- MceFrameBuffer fb_
Pack a data frame in Masd
- Data::incrementSampleCount()
calls MceRx->sendPackDataFrameMsg()
- MceRx::sendPackDataFrameMsg()
calls MasdMaster->sendPackDataFrameMsg()
- MasdMaster::sendPackDataFrameMsg()
pack MasdMasterMsg.getMonitorMsg()
MasdMonitorMsg->packPackDataFrameMsg()
MasdMonitorMsg::packPackDataFrameMsg()
type = PACK_DATAFRAME
forwardMonitorMsg(&masterMsg)
- MasdMonitor::processMsg()
calls packNextFrame()
- MasdMonitor::packNextFrame()
calls scanner_->packNextFrame()
sendDispatchDataFrameMsg()
- Scanner::packNextFrame()
calls share_-> packFrame( fb_->getNextFrame() )
- FrameBuffer::getNextFrame()
returns DataFrameManager* fb_->getNextSlot()->frame_
- BicepShare::packFrame(DataFrameManager* frame)
*frame = *this (MceDataFrameManager)
- MasdMonitor::sendDispatchDataFrameMsg()
MasdMonitorMsg::packDispatchDataFrameMsg()
sendTaskMsg(&msg)
- MasdMonitorMsg::packDispatchDataFrameMsg()
type = DISPATCH_DATAFRAME
- MasdMonitor::processMsg()
calls dispatchNextFrame()
- MasdMonitor::dispatchNextFrame()
DataFrameManager* frame = scanner_-> dispatchNextFrame()
call packFrame(frame->frame())
fdSet_.registerWriteFd(client_.getFd())
note: in connect(), netMsgHandler_.attach(client_.getFd());
- Scanner::dispatchNextFrame()
return fb_.dispatchNextFrame()
- FrameBuffer::dispatchNextFrame()
returns a pointer to the next slot to be dispatched
- MasdMonitor::packFrame()
use NetSendStr to pack message into buffer
- MasdMonitor::serviceMsgQ() called from link established in parseGreetingMsg()
fdSet_.isSetInWrite(netDataFramehandler_.getSendFd()))
netDataFrameHandler_.send();
- NetHandler::send()
return nss_->send()
- NetSendStr::send()
return privateSend(-1)
- NetSendStr::privateSend(fd)
nss_send_msg(netStream_)
sendHandler_(sendArg_)
- NetSendStr::nss_send_msg(netStream_)
send the message. Defined in netbuf.h
- NET_SEND_HANDLER(MasdMonitor::netDataFrameSentHandler)
monitor->dispatchPending_ = false;
monitor->fdSet_.clearFromWriteFdSet(monitor->netDataFrameHandler_.getSendFd());
if(monitor->scanner_->getNframesInQueue() > 1)
monitor->sendDispatchDataFrameMsg();
Places where client_ appears in MasdMonitor.cc:
TcpClient client_;
- dispatchNextFrame()
fdSet_.registerWriteFd(client_.getFd());
- connectScanner()
if(client_.isConnected())
return;
- connect()
client_.connectToServer(...)
client_.setBlocking(false)
netMsgHandler_.attach(client_.getFd());
fdSet_.registerReadFd(client_.getFd());
- disconnect()
client_.disconnect()
Places where netMsgHandler_ appears in MasdMonitor.cc
NetMsgHandler netMsgHandler_
- serviceMsgQ()
if(fdSet_.isSetInWrite(netMsgHandler_.getSendFd()))
netMsgHandler_.send();
- connect()
netMsgHandler_.attach(client_.getFd());
netMsgHandler_.installSendHandler(netMsgSentHandler, this);
netMsgHandler_.installReadHandler(netMsgReadHandler, this);
netMsgHandler_.installErrorHandler(netErrorHandler, this);
- sendIdMsg()
netMsgHandler_.packIdMsg(parent_->getMce()->getIntId());
fdSet_.registerWriteFd(netMsgHandler_.getSendFd());
- NET_READ_HANDLER(MasdMonitor::netMsgReadHandler)
NetMsgHandler* handler = &monitor->netMsgHandler_;
NetMsg* msg = handler->getLastReadNetMsg();
switch(msg->type) {
case NetMsg::GREETING:
monitor->parseGreetingMsg(msg);
break;
- NET_SEND_HANDLER(MasdMonitor::netMsgSentHandler)
NetMsgHandler* handler = &monitor->netMsgHandler_;
monitor->fdSet_.clearFromWriteFdSet(handler->getSendFd());
handler->attachSendStream(-1);
- disconnect()
netMsgHandler_.attach(-1);
- parseGreeting()
netDataFrameHandler_.attachSendStream(netMsgHandler_.getReadFd());
fdSet_.clearFromReadFdSet(netMsgHandler_.getReadFd());
netMsgHandler_.attachReadStream(-1);
Places where netDataFrameHandler_ appears in MasdMonitor.cc
NetHandler netDataFrameHandler_
- serviceMsgQ()
if(fdSet_.isSetInWrite(netDataFrameHandler_.getSendFd()))
netDataFrameHandler_.send();
- NET_SEND_HANDLER(MasdMonitor::netDataFrameSentHandler)
monitor->fdSet_.clearFromWriteFdSet(monitor->netDataFrameHandler_.getSendFd());
- disconnect()
netDataFrameHandler_.attach(-1);
- packFrame()
NetSendStr* nss = netDataFrameHandler_.getSendStr();
- parseGreetingMsg()
netDataFrameHandler_.attachSendStream(netMsgHandler_.getReadFd());
netDataFrameHandler_.installSendHandler(netDataFrameSentHandler, this);
netDataFrameHandler_.installSendErrorHandler(netErrorHandler, this);
2/13
Emacs iswitchb-mode
M-x iswitchb-mode
C++ highlighting
(setq auto-mode-alist (cons '("\\.h$" . c++-mode) auto-mode-alist))
Makefile for MASD
gcp/Makefile
L96:
GCPLIBS += $(LIBDIR)/libGcpMasdSpecific.so
L169:
MAKE_OBJS = antenna/control antenna/canbus canbus grabber mediator masd \
program util
L235:
LINK_OBJS = directives help control/conf control/code/unix/control_src \
control/code/unix/libunix_src grabber masd mediator util scripts \
antenna/control scripts
L299:
TAGSOBJ += $(TOP)/masd/specific/*.cc
gcp/masd/bicep/Makefile*** gcp/masd/bicep/Makefile.rules
Is this really necessary?
MasdControl -> AntennaControl
MasdMaster -> AnetnnaMaster
MceRx -> AntennaRx
MasdNetCmdForwarder -> AntNetCmdForwarder
BicepShare -> BicepShare
BicepTask -> BicepTask
bin_MasdControl -> bin_AntennaControl
Board -> Board
CommandTask -> CommandTask
DataBase -> DataBase
Data -> DataNew, Data
FrameBoard -> FrameBoard
NetDataBoard -> NetDataBoard
NetDataParse -> NetDataParse
Scanner -> Scanner
Try to compile.
Heehe..he...ahhhhh!!!
Look into TimeOut stuff in Data::serviceMsgQ()
READFILE_SIZE = 50 in devicemap.h What shoudl it be?
Where should the pipe_mas_ be?
Think about timers in MasdMaster
Think about timers in AntennaMaster
2/16
How we connect the Antenna to the Mediator
See 12/12
Antenna Layer
_bin_AntennaControl.cc_
AntennaMaster master(...)
AntennaMaster::AntennaMaster(...)
new Thread(&startAntennaMonitor ...)
startThreads(...)
AntennaMonitor::AntennaMonitor(master)
scanner_ = new Scanner(...) // some local initializations
connectScanner(true)
AntennaMonitor::connectScanner(bool)
if( connect() )
sendScannerConnectedMsg(true)
AntennaMonitor::connect()
client_.connectToServer( parent_->host(), TRANS_ANT_SCANNER_PORT, true)
NetMsgHandler_.install[Send, Read, Error]Handler(..., this)
connectionPending_ = true
fdSet_.registerReadFd(client_.getFd())
sendAntennaIdMsg()
TcpClient::connectToServer(...)
fd_ = tcp_connect(host, port, doWait)
AntennaMonitor::sendAntennaIdMsg()
netMsgHandler_.packAntennaIdMsg(...)
fdSet_.registerWriteFd(netMsgHandler_.getSendFd())
NetMsgHandler::packAntennaIdMsg()
NetMsg::packAntennaIdMsg()
packNetMsg(&netMsg) // pack msg into buffer
NetMsg::packAntennaIdMsg()
type = ID
body.antenna = id
AntennaMonitor::serviceMsgQ()
if( fdSet_.isSetInWrite( netMsgHandler_.getSendFd() ) )
netMsgHandler_.send()
NetMsgHandler::send() // NetHandler::send() // nss_->send()
Mediator Layer
AntennaConsumerNormal::serviceMsgQ()
if( fdSet_.isSetInRead( listener_->getFd()))
itializeConnection()
Fix NET_INIT_CMD stuff
- control/code/unix/libunix_src/specific/rtcnetcoms.h
- control/code/unix/control_src/common/genericcontrol.c
- control/code/unix/control_src/common/NewNetCmd.h
- control/code/unix/control_src/common/genericscheduler.c
- mediator/bicep/ControlNetCmdForwarder.cc Now only have one case for NET_INIT_CMD
- mediator/bicep/ControlMsg.h change back to packInitMsg(bool start)
- mediator/bicep/Control.cc change back to one case ControlMsg::INIT
- mediator/bicep/AntennaControlMsg.h change back to packInitMsg(bool start)
- mediator/bicep/AntennaControl.cc processMsg case AntennaControlMsg::INIT
- mediator/TransNetCmdForwarder.cc forwardNetCmd(NetCmd) case NET_INIT_CMD
- util/bicep/AntennaNetCmdForwarder.cc removed case NET_INIT_ANT_CMD
- util/bicep/MceNetCmdForwarder removed case NET_INIT_MCE_CMD
- util/bicep/ArrayNetCmdForwarder.cc remove case NET_INIT_ANT_CMD, NET_INIT_MCE_CMD
- util/common/NetCmdHandler.cc remove print statement for NET_INIT_ANT_CMD
MASD compiles now. I'm scared.
svn commit revision 14: MASD compiles
kstory@bicep1:gcp$ svn commit -m "MASD compiles. Fixed NET_INIT_CMD" Sending TAGS Sending control/code/unix/control_src/common/genericcontrol.c Sending control/code/unix/libunix_src/bicep/rtcnetcoms.h Sending lib/libGcpMediatorSpecific.so Sending lib/libGcpUtilCommon.so Sending lib/libGcpUtilSpecific.so Sending mediator/bicep/AntennaControl.cc Sending mediator/bicep/AntennaControlMsg.h Sending mediator/bicep/Control.cc Sending mediator/bicep/Control.h Sending mediator/bicep/ControlMsg.h Sending mediator/bicep/ControlNetCmdForwarder.cc Sending mediator/bicep/MceControl.cc Sending mediator/bicep/MceControlMsg.h Sending mediator/bicep/TransNetCmdForwarder.cc Sending util/bicep/AntennaNetCmdForwarder.cc Sending util/bicep/ArrayNetCmdForwarder.cc Sending util/bicep/MceNetCmdForwarder.cc Sending util/common/NetCmdHandler.cc Transmitting file data ................... Committed revision 14.
2/17
Debug and DBPRINT statements
Allow DBPRINT statements.
DBPRINT() function is defined inside of a
DBPRINT()...
statement. This is defined in
gcp/util/Directives.h:
In gcp/directives/common
Makefile.directives
COMPILE_WITH_DEBUG = 1
Makefile.directives.last
COMPILE_WITH_DEBUG = 1
Makefile.directives.template
COMPILE_WITH_DEBUG = 0
Makefile.flags
Don't touch!
Masd connecting to the Mediator Layer
It works!!!
2/18
versioned item obstructed by some item of a different kind
http://oreilly.com/pub/a/mac/2004/08/10/subversion.html?page=last
svn commit revision 16: Masd runs! No masutils yet.
kstory@bicep1:gcp$ svn commit -m "Working version before integrating masutils." Sending TAGS Sending antenna/control/bicep/Makefile.rules Sending bin/bicepAntennaControl Sending bin/bicepGrabber Sending bin/bicepMediator Sending control/code/unix/control_src/bicep/specificscript.c Sending control/code/unix/control_src/common/Makefile.rules Sending control/code/unix/lib/libtkpanel.a Sending control/code/unix/lib/libtkpanel.so Sending control/code/unix/libmonitor_src/Makefile.rules Sending control/code/unix/libunix_src/bicep/Makefile.rules Sending control/code/unix/libunix_src/common/Makefile.rules Sending control/code/unix/viewer_src/Makefile.rules Sending directives/common/Makefile.directives Sending directives/common/Makefile.directives.last Sending grabber/common/Makefile.rules Sending help/registers.html Sending lib/libGcpAntennaControlSpecific.so Sending lib/libGcpControlCommon.so Sending lib/libGcpControlSpecific.so Sending lib/libGcpGrabberCommon.so Adding (bin) lib/libGcpMasdSpecific.so Sending lib/libGcpMediatorSpecific.so Sending lib/libGcpMonitor.so Sending lib/libGcpProgramCommon.so Sending lib/libGcpQuadSrc.so Sending lib/libGcpScan.so Sending lib/libGcpScript.so Sending lib/libGcpShareCommon.so Sending lib/libGcpShareSpecific.so Sending lib/libGcpSla.so Sending lib/libGcpSrc.so Sending lib/libGcpTclControl.so Sending lib/libGcpTransaction.so Sending lib/libGcpUtilCommon.so Sending lib/libGcpUtilSpecific.so Sending masd/bicep/CommandTask.cc Sending masd/bicep/CommandTask.h Sending masd/bicep/Data.cc Sending masd/bicep/DataBase.cc Sending masd/bicep/DataBase.h Sending masd/bicep/MasdMaster.cc Sending masd/bicep/MasdMaster.h Sending masd/bicep/MceRx.cc Sending masd/bicep/NetDataBoard.cc Sending masd/bicep/NetDataBoard.h Sending masd/bicep/NetDataParse.cc Sending masd/bicep/NetDataParse.h Adding masd/bicep/bin_MasdControl.cc Sending mediator/bicep/Makefile.rules Sending mediator/bicep/MceConsumer.cc Deleting misc/scripts/bicep/20090119_210446.dat Deleting misc/scripts/bicep/20090119_211647.dat Deleting misc/scripts/bicep/20090119_225307.dat Deleting misc/scripts/bicep/20090119_232055.dat Deleting misc/scripts/bicep/20090119_235924.dat Deleting misc/scripts/bicep/20090120_000341.dat Deleting misc/scripts/bicep/20090120_000423.dat Deleting misc/scripts/bicep/20090120_001008.dat Deleting misc/scripts/bicep/20090120_001030.dat Deleting misc/scripts/bicep/20090121_202656.dat Deleting misc/scripts/bicep/20090121_204145.dat Deleting misc/scripts/bicep/20090121_204339.dat Deleting misc/scripts/bicep/20090121_204519.dat Deleting misc/scripts/bicep/20090123_162045.dat Deleting misc/scripts/bicep/20090123_175820.dat Deleting misc/scripts/bicep/20090124_202422.dat Deleting misc/scripts/bicep/20090126_164118.dat Deleting misc/scripts/bicep/20090126_170738.dat Deleting misc/scripts/bicep/20090126_221230.dat Deleting misc/scripts/bicep/20090126_235452.dat Deleting misc/scripts/bicep/20090127_185918.dat Deleting misc/scripts/bicep/20090127_203449.dat Deleting misc/scripts/bicep/20090127_213722.dat Deleting misc/scripts/bicep/20090127_214829.dat Deleting misc/scripts/bicep/20090129_194544.dat Deleting misc/scripts/bicep/20090129_194840.dat Deleting misc/scripts/bicep/20090131_195709.dat Deleting misc/scripts/bicep/20090131_201724.dat Sending misc/scripts/bicep/myclose Sending misc/scripts/bicep/mysimpleStartup Sending misc/scripts/bicep/startXterms Sending util/bicep/Makefile.rules Sending util/common/Makefile.rules Transmitting file data ........................................................ Committed revision 16.
Check out Walt's masutils from bicep0
$ cvs -d kstory@bicep0.caltech.edu:/home/cvsroot co masutilsCompile:
kstory@spudws2:masutils> pwd /home/kstory/work/syncBox/masutils $ make mas2dir.c:7:21: error: dirfile.h: No such file or directoryGet dirfile.h
kstory@spudws2:masutils> scp kstory@bicep0.caltech.edu:/export/raid/bicep0/pole_backups_200812/bicep1/usr/local/dirfile-0.87/src/dirfile/dirfile.h . $ mv dirfile.h src/mas2dir/.
Compile:
Run:
2/19
Walt's Masutils: first look
Register Map File Format
Defined in masutils/regmap/bicep2_regmap.txt
Register lines:
SOURCE REGISTER_NAME DATA_TYPE LENGTH
Sections:
SQUID
RegBlock bicepSquid[]
HEADER
RegBlock bicepPsc[]
RegBlock bicepCc[]
RegBlock bicepRc[]
RegBlock bicepBc[]
RegBlock bicepAc[]
RegBlock bicepSys[]
RegBlock bicepSq1[]
RegBlock bicepSq2[]
RegBlock bicepSa[]
FRAMEACQ
RegBlock bicepFrameAcq[]
DATA
RegBlock bicepData[]
All inside mce board:
RegBoardTemp bicep_mce_board[] = {
- bicepPsc
- bicepCC
- bicepRC
- bicepBC
- bicepAC
- bicepSYS
- bicepSq1
- bicepSq2
- bicepSA
- bicepFrameAcq
- bicepData
mas daemon.c
struct mas_daemon {
- int runfile_fd, data_dummy_fd, runfile_dummy_fd
- mas_datafile data_reader
- FILE* runfile_stream
- fd_set rdfds, last_fds
- int nfds
- flat_regs* reg // in regmap.h, typedef char flat_regs
- unit32_t regs_size
- struct timeval timeout, last_wait
- struct data_addrs da
- uint32_t* dbuf
- int dbuf_len
- int spf
- struct mode_key key
- int on_sample
}
main()
{
struct mas_daemon dd;
int r;
FILE* frames_out;
init_mas_daemon(&dd);
frames_out = fopen("slow_frames", "wb");
while(1) {
r = dd_select(&dd);
r = dd_handle_runfile(&dd);
if(r != 0)
break
r = dd_handle_data( &dd)
if(r!=0) errors
break
if( dd.on_sample >= dd.spf )
fwrite(dd.reg, dd.regs_size, 1, frames_out)
dd.on_sample = 0
}
close_mas_daemon(&dd)
fclose(frames_out)
return 0
}
init mas daemon(struct mas daemon* dd)
dd->data_dummy_fd = opn_dummy_writer("mas_data")
... see paper notebook
masutils/src/lib/datafile:
load_data.h, c
struct mas_datafile
functions for dealing with mas_datafile
Put all of this in DataFileHandler
data_mode.h, c
struct mode_def
struct mode_key
UNPACK_DOUBLE_1(...)
PACK_INT_1(...)
int get_unpack_key(...)
int get_pack_key(...)
void pack_all(...)
endian.h
int check_endianness()
void swap_4(...)
void swap_2(...)
2/20
Working on putting Registers into DataFileHandler.h
2/23
Even windows in emacs:
Ctr-x +
Make clean "stub" version for Walt to work from.
2/24
Make clean "stub" version for Walt to add masutils
Export:$ svn export file:///home/kstory/svnRepos/gcp/ newGcp/
Description of MASD classes
Doxygen for a previous version of gcp: MASD is not complete in this, but most other things should be.
http://find.uchicago.edu/~kstory/doxygen/html/
Data class
Derrived class of DataBase.
Data is a thread of MceRx.
Fields:
- TimeVal timeOut_
- unsigned fastTimeOutMilliSeconds_
- unsigned slowTimeOutSeconds_
- FdSet fdSet_
- ofstream* fout_
Methods:
- serviceMsgQ() // This is the method with the loop over select()
- incrementSampleCount() // This gets called when the data pipe is ready to be read, or we time out.
It buffers data into the NetDataParse object, and starts the Frame Packing process.
DataBase class
Fields:
- MceRx* parent_ // The parent thread of this (Data) thread
- NetDataBoard* dataBoard_ // Deals with reading out data (from UDP originally)
- NetDataParse* mce_ // Object that parses what NetDataBoard read into arrays and registers
Methods:
- bufferRunFile() // Call NetDataParse::parse_runFile()
- bufferDataFile() // Call NetDataParse::parse_dataFile()
- writeMceData() // Call NetDataParse::pack_mce_frame()
NetDataBoard class
This class deals with reading data from an external source (UDP socket in BICEP1).
Fields:
- const char* pipe_runFile_
- const char* pipe_dataFile_
- const char* pipe_command_
- bool simData_
// These structs were analogous to what was used to read out of the UDP socket, and are probably not needed any more.
- struct RunFile
- struct DataFile
- struct MceData
- FdSet fdSet_ // I'm not sure what this is used for
- fd_set read_set_
- fd_set write_set_
// RunFile Pipe variables
- char* runMsg_
- size_t runFileSize_
- int funFile_fd_
// DataFile Pipe variables
- char* dataMsg_
- size_t dataFileSize_
- int dataFile_fd_
// Command Pipe variables
- char* commandMsg_
- int command_fd_
Methods:
- initRunFileReadPipe( )
- int readRunFile()
- initDataFileReadPipe( )
- readData()
- initCommandPipe()
- writeCommand()
NetDataParse class
This class parses what the NetDataBoard reads into arrays and finally the register.
Derrived class of type Board
Board provides the findReg(...) function
Fields:
- float* mceRunFileTest;
- float* mceDataFileTest;
- unsigned int* slowFrameTest;
- RegMapBlock* mceRunFileTest_
- RegMapBlock* mceDataFileTest_
- RegMapBlock* slowFrameTest_
Methods:
- init_mce_registers() // sets size of arrays, and calls findReg(...)
- parse_runFile(NetDataBoard) // This is a stub
- parse_dataFile(unsigned, NetDataBoard) // This is a stub
BicepShare class
This class deals with creating registers.
Derrived class of gcp::util::MceDataFrameManager
Classes:
- BicepRegDb // This class handles talking to the register data base
- BicepClock // I probably don't need this here anymore
-
Fields:
- unsigned* tmpbuf_
- string controlHosg_
- BicepRegDb* regdb_
- BicepClock* clock_
Methods:
- grabRegs()
- ungrabRegs()
- flagBoard()
- unflagBoard()
- verifyBoard()
- // clock stuff, probably don't need this
- RegMapBoard* findRegMapBoard(string boardName)
- unsigned int getNboard()
- unsigned int getNarchived()
- unsigned int getNreg()
- unsigned int getNbyte()
- void packFrame(gcp::util::DataFrameManager* )
DataFrameManager inheritance
DataFrameManager (gcp/util/common/DataFramemanager)
Deals with packing data frames
Main base class.
It has two classes derrived from it:
- RegMapDataFrameManager
- ArrayMapDataFrameManager
Fields:
- DataFrame* frame_
Methods:
- pack()
- unpack()
- fillBuffer()
RegMapDataFrameManager (gcp/util/common/RegMapDataFrameManager)
Derrived class of DataFrameManager
It has four classes derrived from it:
- AntennaDataFrameManager
- ArrayRegMapDataFraemManager
- BoardDataFramemanager
- MceDataFrameManager
Fields:
- ArrayMap* arrayMap_
- Regmap* regMap_
Methods:
- writeBoard(), writeReg(), writeRegNoLock()
- readReg(), readRegNoLock()
- findReg(), findRegmapBoard(), getReg()
- getTYPEptr(), TYPE = Char, Uchar, Short, Ushort, Uint, Int, Float, Double, Date
- packData()
MceDataFrameManager (gcp/util/common/MceDataFrameManager.cc)
Derrived class of RegMapDataFrameManager
Fields:
- MceDataFrame* mceFrame_
AntennaDataFrameManager (gcp/util/common/AntennaDataFrameManager.cc)
Derrived class of RegMapDataFrameManager
Fields:
- AntDataFrame* antFrame_
ArrayMapDataFrameManager (gcp/util/common/ArrayMapDataFrameManager)
Derrived class of DataFrameManager
Fields:
-ArrayMap* arrayMap_
Methods:
- writeRegMap(0, writeReg()
- readRegMap(), readReg()
- packData(), unpackData()
- getReg(), findReg()
ArrayDataFrameManager (gcp/util/common/ArrayDataFrameManager)
Derrived class of ArrayMapDataFrameManager
This is basically a wrapper class for ArrayMapDataFrameManager.
Methods:
- writeAntennaRegMap()
- writeMceRegMap()
- ArrRegMap* findAntennaRegMap(AntennaDataFramemanager& fm)
- ArrRegmap* findMceRegMap(MceDataFrameManager& fm)
NetMceDataFrameHandler (gcp/util/common/NetMceDataFrameHandler.cc)
Derrived class of NetHandler
Handles sending and receiving MceDataFrame's
Fields:
- MceDataFramemanager frame_
MceDataFrame (gcp/util/common/MceDataFrame.cc)
Derrived class of DataFrameNormal : DataFrame
Fields:
- MceNum mceNum_
MceNum (gcp/util/common/MceNum.cc)
Iterator for Mce's. BICEP2 will only have one mce (mce0).
Fields:
- enum Id id_
MceFrameBuffer (gcp/util/common/MceFrameBuffer.cc)
Derrived class of FrameBuffer
For tonight:
- Understand mediator/Scanner thread.
- Understand how Mediator Layer packs Frames.
Doxygen for current gcp
Edit Doxygen.cfg file as documented in referenceNotes.muse
Run:
$ doxygen Doxygen.cfg $ tar -cvf doxyhtml.tar html $ sftp to find $ unpack in public_html
2/25
Check out fresh revision 16
$ svn checkout file:///home/kstory/svnRepos/gcp/ gcp
Re-do Doxygen.cfg and re-run. See projects page for details.
Understand frame merge in Mediator Layer
mediator/Scanner::startNewFrame()
This function is where we will define a frame queue.
currentlyh looking at FrameBuffer::getFrame(uint, bool)
2/27
regmap.c -> "frame" board.
MceConsumer::serviceMsgQ options
1) msgqFd // Message queue
processTaskMsg(&stop)
2) listener_->getFd() // Connection request from the Mce
initializeConnection()
3) temporaryHandler_.getNetMsgHandler()->getSendFd() // send a Greeting Msg
temporaryHandler_.sendNetMsg()
4) temporaryHandler_.getNetMsgHandler()->getReadFd() >= 0 // response from newly connected Mce
4a) temporaryHandler_.getNetMsgHandler()->getReadFd() // initialization msg
temporaryHandler_.readNetMsg()
4b) timedOut() // timed out waiting for response from new Mce
terminateConnection(&temporaryHandler_)
listen(true);
5) for(iant)
connectedHandlers_[iant]->getReadFd() // read data frame from Mce
connectedHandlers_[iant]->read()
NET_READ_HANDLER
Working example:
MceConsumer::NET_READ_HANDLER(netMceDataFrameReadHandler)
MceConsumer::NET_SEND_HANDLER(netMsgSentHandler) {
...
NetMceDataFrameHandler* handler =
consumer_->connectedandlers_[mceNum.getIntId()];
handler->installReadHandler(netMceDataFrameReadhandler, handler);
}
NetHandler::installReadhandler(NET_READ_HANDLER(* handler), void* arg) {
nrs_->installReadHandler(handler, arg)
}
NetReadStr::installReadHandler(NET_READ_HANDLER(* handler), void* arg) {
readhandler_ = handler;
readArg_ = arg;
}
NetReadStr has a member
NET_READ_HANDLER(* readHandler_)
NetReadStr::read() -> privateRead(int fd)
NetReadStr::privateRead(int fd) {
// nrs_read_msg(netStream_)
if(readState == NET_READ_DONE)
if(readHandler_ != 0)
readhandler_(readArg_);
To change:
- RegMapDataFrameManager::getId(unsigned ) // needs to be based off of syncBox frame number.
- ArrayMapDataFrameManager::getId(unsigned )
- Scanner::checkDataFrames
- follow through Scanner::sendDispatchDataFrameMsg() -> FrameBuffer::dispatchNextFrame()
To Check:
- ArrayDataFrameManager::writeMceRegMap(...)
- Scanner::setMceReceived()
- antFrame->readReg(...) in Scanner::packAntennaFrame()
- Initialization process of frame buffer in Scanner.cc. I think it is ok.
Questions:
- What is constant: fast_regs / slow_frames OR rate of slow_frames? First is better.
- Does any of this need to be dynamically allocated, or can it all be compiled in? Hopefully compiled in...
- How many fast frames per slow frame? Right now it is 50.
I am currently at Scanner::packMceFrame(), and working through the data frame process.
Later:
- Clean up antenna/control/bicep/DataBase, NetDataParse
- Clean up antenna/control/bicep/DataNew
- Proper register maps for mce data.
- Timing lag in Antenna Layer between SyncBox interrupts and sampling
- Gps in Antenna Layer
- MASD_COMMAND_PIPE in devicemap.h
- rtcnetcoms.c, datasystem_cmd_members // remove box, nbox
- mediator/bicep/Control::cleanMceControl // sendStopMsg()
- util/common/NetMsgHandler.cc // Lots of commented out functions; make sure it works! Questions:
- How do I delete struct SquidRegs? is delete squidRegs_ enough?