void ASTPrint( int lev, ASTNode node ) { if (! node) { indent( lev ); ec_stderr_printf( "NULL" ); return; } /* Simplify our lives ... */ if (currentScope) { if (currentScope->type == PackageScope) { currentPackage = currentScope->target; currentBytecode = EC_PACKAGECODE(currentScope->target); } else { currentBytecode = currentScope->target; } currentLiteral = EC_COMPILEDLFRAME(currentBytecode); } switch ( node->type ) { case nullType: indent( lev ); ec_stderr_printf( "<nullType>" ); break; case symbolType: printSymbol( lev, node ); break; case qualifiedSymbolType: printQualifiedSymbol( lev, node ); break; case constExprType: printConstant( lev, node ); break; case variableExprType: printVariable( lev, node ); break; case arrayConstructionExprType: printArrayCons( lev, node ); break; case hashConstructionExprType: printHashCons( lev, node ); break; case unaryExprType: printUnary( lev, node ); break; case binaryExprType: printBinary( lev, node ); break; case conditionalExprType: printConditional( lev, node ); break; case orExprType: printOr( lev, node ); break; case andExprType: printAnd( lev, node ); break; case assignExprType: printAssign( lev, node ); break; case simAssignExprType: printSimAssign( lev, node ); break; case arrayRefExprType: printArrayRef( lev, node ); break; case declNodeType: printDecl( lev, node ); break; case declAtomNodeType: printDeclAtom( lev, node ); break; case statementType: printStatement( lev, node ); break; case labeledStmtType: printLabeledStmt( lev, node ); break; case exprStmtType: printExprStmt( lev, node ); break; case ifStmtType: printIf( lev, node ); break; case whileStmtType: printWhile( lev, node ); break; case doStmtType: printDo( lev, node ); break; case forStmtType: printFor( lev, node ); break; case forInStmtType: printForIn( lev, node ); break; case breakStmtType: printBreak( lev, node ); break; case continueStmtType: printContinue( lev, node ); break; case gotoStmtType: printGoto( lev, node ); break; case tryStmtType: printTry( lev, node ); break; case catchStmtType: printCatch( lev, node ); break; case throwStmtType: printThrow( lev, node ); break; case importStmtType: printImport( lev, node ); break; case paramNodeType: printParam( lev, node ); break; case paramListType: printParamList( lev, node ); break; case callNodeType: printCall( lev, node ); break; case methodCallNodeType: printMethodCall( lev, node ); break; case stmtListType: printStmtList( lev, node ); break; case funcNodeType: printFunction( lev, node ); break; case returnNodeType: printReturn( lev, node ); break; case classNodeType: printClass( lev, node ); break; case methodNodeType: printMethod( lev, node ); break; case packageNodeType: printPackage( lev, node ); break; } }
///////////////////////////////////////////////////////////////////////////////////////// // CAN message dispatcher void ProcessCANMessage(int index) { unsigned char fn_code; unsigned char node_id; //unsigned short obj_index; //unsigned char sub_index; unsigned char len; unsigned char data[8]; unsigned char data_return = 0; //int i; while (0 == can_get_message(CAN_Ch[index], fn_code, node_id, len, data, false)) { switch (fn_code) { case COBTYPE_TxSDO: { } break; case COBTYPE_TxPDO1: { UpdateStatus(index, node_id, MAKEWORD(data[4], data[5])); printf("\tTxPDO1[node=%d]\n", node_id); printf("\t\tstatus word = "); printBinary(data[5]); printf(" "); printBinary(data[4]); printf("b\n"); printf("\t\tDI = "); printBinary(data[2]); printf(" "); printBinary(data[1]); printf(" "); printBinary(data[0]); printf("b\n"); } break; case COBTYPE_TxPDO2: { printf("\tTxPDO2[node=%d]: ", node_id); printf("%c%c[%d] = ", data[0], data[1], (data[2] | ((unsigned short)(data[3]&0x3F)<<8))); if ((data[3]&0x40) != 0) { printf("ERROR(%04X %04Xh)", MAKEWORD(data[6], data[7]), MAKEWORD(data[4], data[5])); } else { if ((data[3]&0x80) != 0) { printf("%f", (float)(MAKEWORD(data[4], data[5]), MAKEWORD(data[6], data[7]))); } else { printf("%d", (int)(MAKEWORD(data[4], data[5]), MAKEWORD(data[6], data[7]))); } } printf("\n"); } break; case COBTYPE_TxPDO3: { long enc_counter; printf("\tTxPDO3[node=%d]\n", node_id); enc_counter = MAKELONG(MAKEWORD(data[0], data[1]), MAKEWORD(data[2], data[3])); printf("\t\tdemand position = %.1f (deg) / %d (count)\n", COUNT2DEG(enc_counter), enc_counter); enc_counter = MAKELONG(MAKEWORD(data[4], data[5]), MAKEWORD(data[6], data[7])); printf("\t\tactual position = %.1f (deg) / %d (count)\n", COUNT2DEG(enc_counter), enc_counter); } break; case COBTYPE_TxPDO4: { printf("\tTxPDO4[node=%d]: ", node_id); printf("\n"); } break; } } }
int main(int argc, char ** argv){ int input = atoi(argv[1]); printBinary(input); printf("number of 1 bits in input is: %d",bitCount(input)); }