Ignore:
Timestamp:
01/14/03 12:08:46 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/devdrv
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/devdrv/macs.cc

    r1702 r1703  
    4848    case 0x100a:
    4949        lout << "- " << GetNodeName() << ": Using Software Version V" << dec << (int)(val>>16) << "." << (int)(val&0xff) << endl;
     50        fSoftVersion = val;
     51        return;
     52
     53    case 0x100b:
     54        // Do not display, this is used for CheckConnection
     55        // lout << "Node ID: " << dec << val << endl;
    5056        return;
    5157
     
    221227}
    222228
    223 void Macs::InitDevice(Network *net)
    224 {
    225     lout << "- " << GetNodeName() << ": MAC Init device." << endl;
    226     NodeDrv::InitDevice(net);
    227     lout << "- " << GetNodeName() << ": MAC Init device...done." << endl;
    228 
    229 //    SendSDO(0x4003, (LWORD_t)('E'<<24 | 'X'<<16 | 'I'<<8 'T'));
    230 //    WaitForSdo(0x4003, 0);
    231 
    232 /*
    233     lout << "- Requesting SDO 0x2002 (vel) of " << (int)GetId() << endl;
    234     RequestSDO(0x2002);
    235     WaitForSdo(0x2002);
    236 
    237     lout << "- Requesting SDO 0x2003 of " << (int)GetId() << endl;
    238     RequestSDO(0x2003);
    239     WaitForSdo(0x2003);
    240 
    241     lout << "- Requesting SDO 0x2004 of " << (int)GetId() << endl;
    242     RequestSDO(0x2004);
    243     WaitForSdo(0x2004);
    244     */
     229void Macs::CheckConnection()
     230{
     231    RequestSDO(0x100b);
     232    WaitForSdo(0x100b);
     233
     234    // FIXME! Not statically linked!
     235    //    if (fSoftVersion<0x00000035)
     236    //        fIsZombie = true;
     237}
     238
     239
     240void Macs::Init()
     241{
    245242    lout << "- " << GetNodeName() << ": Requesting Mac Software Version." << endl;
    246243    RequestSDO(0x100a);
    247244    WaitForSdo(0x100a);
    248245
    249     if (IsZombie())
    250         return;
     246    if (fIsZombie)
     247    {
     248        lout << GetNodeName() << " - InitDevice failed!" << endl;
     249        return;
     250    }
    251251
    252252    EnableTimeout(kFALSE);
     
    259259    SendSDO(0x3000, string('o', 'n'));
    260260    WaitForSdo(0x3000);
    261 
    262261
    263262//    SetHome(250000);
     
    413412    // or by a positioning command (POSA, ...)
    414413    //
    415     lout << "- " << GetNodeName() << ": Starting Posistion Sync Mode." << endl;
     414    lout << "- " << GetNodeName() << ": Starting Position Sync Mode." << endl;
    416415    SendSDO(0x3007, 1, string('s', 'y', 'n', 'c'));
    417416    WaitForSdo(0x3007, 1);
     
    547546}
    548547
     548// FIXME? Handling of fIsZombie?
    549549void Macs::HandleError()
    550550{
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r1702 r1703  
    1111private:
    1212    BYTE_t   fMacId;
     13
     14    LWORD_t  fSoftVersion;
    1315
    1416    LWORD_t  fVelRes;
     
    4143    Bool_t HandleTimer(TTimer *t);
    4244
     45    void Init();
     46    //bool Reboot();
     47
     48    //bool InitDevice(Network *);
     49
     50    //void StartDevice();
     51    void StopDevice();
     52
     53    void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv);
     54    void HandleSDOOK(WORD_t idx, BYTE_t subidx);
     55    void HandleSDOError(LWORD_t data)           { NodeDrv::HandleSDOError(data); }
     56
     57    void HandlePDO1(BYTE_t *data, timeval_t *tv);
     58    void HandlePDO2(BYTE_t *data, timeval_t *tv);
     59
     60    void CheckConnection();
     61
    4362public:
     63    enum
     64    {
     65        kNoSync = BIT(0),
     66        kPosSync = BIT(1),
     67        kVelSync = BIT(2)
     68    };
    4469    enum
    4570    {
     
    5479    Macs(const BYTE_t nodeid, const char *name=NULL, MLog &out=gLog);
    5580    virtual ~Macs();
    56 
    57     void InitDevice(Network *);
    58 
    59     //void StartDevice();
    60     void StopDevice();
    61 
    62     void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv);
    63     void HandleSDOOK(WORD_t idx, BYTE_t subidx);
    64     void HandleSDOError(LWORD_t data)           { NodeDrv::HandleSDOError(data); }
    65 
    66     void HandlePDO1(BYTE_t *data, timeval_t *tv);
    67     void HandlePDO2(BYTE_t *data, timeval_t *tv);
    6881
    6982    void SendMsg(BYTE_t data[6]);
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r1701 r1703  
    5151        }
    5252    case 0x100b:
    53         lout << "Node ID: " << dec << val << endl;
     53        // Do not display, this is used for CheckConnection
     54        // lout << "Node ID: " << dec << val << endl;
    5455        return;
    5556
     
    9495void ShaftEncoder::DisplayVal()
    9596{
     97    if (fIsZombie)
     98    {
     99        fLabel[0]->SetText(new TGString(""));
     100        fLabel[1]->SetText(new TGString(""));
     101        fLabel[2]->SetText(new TGString(""));
     102        fUpdPos = ~fPos;
     103        fUpdVel = ~fVel;
     104        fUpdAcc = ~fAcc;
     105        return;
     106    }
     107
    96108    char text[21];
    97109
     
    190202}
    191203
    192 void ShaftEncoder::InitDevice(Network *net)
    193 {
    194     NodeDrv::InitDevice(net);
    195 
     204void ShaftEncoder::Init()
     205{
    196206    //-----------------------------------------------------------------------
    197207    //                    Start Setup of the Shaft Encoder
     
    203213    lout << "- " << GetNodeName() << ": Requesting Hardware Type (0x1000)." << endl;
    204214    RequestSDO(0x1000);
    205     if (!WaitForSdo(0x1000))
    206     {
    207         lout << "  ... failed." << endl;
    208         fIsZombie = true;
     215    WaitForSdo(0x1000);
     216
     217    if (fIsZombie)
     218    {
     219        lout << GetNodeName() << " - Init failed!" << endl;
    209220        return;
    210221    }
     
    265276}
    266277
     278void ShaftEncoder::CheckConnection()
     279{
     280    // Request Node number
     281    RequestSDO(0x100b);
     282    WaitForSdo(0x100b);
     283}
     284/*
     285bool ShaftEncoder::InitDevice(Network *net)
     286{
     287    NodeDrv::InitDevice(net);
     288
     289    Init();
     290
     291    return !fIsZombie;
     292}
     293
     294// --------------------------------------------------------------------------
     295//
     296// This should be called from a master or main thread to get a node out
     297// of the Zombie-Status.
     298//
     299bool ShaftEncoder::Reboot()
     300{
     301    fIsZombie = false;
     302
     303    Init();
     304
     305    return !fIsZombie;
     306}
     307*/
     308
    267309void ShaftEncoder::ReqPos()
    268310{
     
    277319void ShaftEncoder::SetPreset(LWORD_t pre)
    278320{
     321    lout << "- " << GetNodeName() << ": Setting Preset." << endl;
     322
     323    SendSDO(0x6003, (LWORD_t)fPos);
     324    if (!WaitForSdo(0x6003))
     325        return;
     326
    279327    fPos  = pre%16384;
    280328    fTurn = pre/16384;
    281 
    282     lout << "- " << GetNodeName() << ": Setting Preset." << endl;
    283     SendSDO(0x6003, (LWORD_t)fPos);
    284     WaitForSdo(0x6003);
    285329}
    286330
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.h

    r1690 r1703  
    3232    void ReqPos();
    3333
     34    void Init();
     35    void CheckConnection();
     36
    3437public:
    3538    ShaftEncoder(const BYTE_t nodeid, const char *name=NULL, MLog &out=gLog);
    3639    virtual ~ShaftEncoder();
    3740
    38     void InitDevice(Network *);
     41    //bool InitDevice(Network *);
     42    //bool Reboot();
    3943
    4044    //void StartDevice();
     
    5054    void HandlePDO2(BYTE_t *data, timeval_t *tv) { HandlePDOType2(data, tv); }
    5155
    52     LWORDS_t GetPos() { return fPos+fTurn*fTicks; }
     56    LWORDS_t GetPos() { return fIsZombie ? 0 : fPos+fTurn*fTicks; } // FIXME? 0?
    5357    LWORD_t  GetPhysRes() { return fTicks; }
    5458
Note: See TracChangeset for help on using the changeset viewer.