Esempio n. 1
0
Token *Parser::reduceR21(TokenStack &stack)
{
    if (stack.size() < 6)
        return 0;
    Token *optArgList = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *funcName = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *specFuncName = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *func = new Token(Token::Function_Token);
    Function_TokenData *data = DATA_CAST(Function, func);
    data->setName(DATA_CAST(String, specFuncName)->value());
    delete specFuncName;
    Token *subprogram = new Token(Token::Subprogram_Token);
    Token *statement = new Token(Token::Statement_Token);
    DATA_CAST(Statement, statement)->setString(DATA_CAST(String, funcName)->value());
    delete funcName;
    DATA_CAST(Subprogram, subprogram)->prependStatement(DATA_CAST(Statement, statement));
    delete statement;
    Token *obligArgList = new Token(Token::ObligArgList_Token);
    DATA_CAST(ArgList, obligArgList)->prependArgument(DATA_CAST(Subprogram, subprogram));
    delete subprogram;
    data->setObligatoryArguments(DATA_CAST(ArgList, obligArgList));
    delete obligArgList;
    data->setOptionalArguments(DATA_CAST(ArgList, optArgList));
    delete optArgList;
    return func;
}
Esempio n. 2
0
Token *Parser::reduceR14(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *f = stack.takeLastToken();
    Token *s = new Token(Token::Statement_Token);
    DATA_CAST(Statement, s)->setFunction(DATA_CAST(Function, f));
    delete f;
    return s;
}
Esempio n. 3
0
Token *Parser::reduceR13(TokenStack &stack)
{
    if (stack.size() < 2)
        return 0;
    Token *p = stack.takeLastToken();
    Token *s = stack.takeLastToken();
    DATA_CAST(Subprogram, p)->prependStatement(DATA_CAST(Statement, s));
    delete s;
    return p;
}
Esempio n. 4
0
Token *Parser::reduceR9(TokenStack &stack)
{
    if (stack.size() < 2)
        return 0;
    Token *argList = stack.takeLastToken();
    Token *arg = stack.takeLastToken();
    DATA_CAST(ArgList, argList)->prependArgument(DATA_CAST(Subprogram, arg));
    delete arg;
    return argList;
}
Esempio n. 5
0
Token *Parser::reduceR8(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *arg = stack.takeLastToken();
    Token *argList = new Token(Token::OptArgListNE_Token);
    DATA_CAST(ArgList, argList)->appendArgument(DATA_CAST(Subprogram, arg));
    delete arg;
    return argList;
}
Esempio n. 6
0
Token *Parser::reduceR7(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *argListNE = stack.takeLastToken();
    Token *argList = new Token(Token::OptArgList_Token);
    DATA_CAST(ArgList, argList)->copyArguments(DATA_CAST(ArgList, argListNE));
    delete argListNE;
    return argList;
}
Esempio n. 7
0
Token *Parser::reduceR15(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *an = stack.takeLastToken();
    Token *s = new Token(Token::Statement_Token);
    DATA_CAST(Statement, s)->setArgumentNo(DATA_CAST(ArgumentNo, an));
    delete an;
    return s;
}
Esempio n. 8
0
Token *Parser::reduceR16(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *string = stack.takeLastToken();
    Token *s = new Token(Token::Statement_Token);
    DATA_CAST(Statement, s)->setString(DATA_CAST(String, string)->value());
    delete string;
    return s;
}
Esempio n. 9
0
Token *Parser::reduceR1(TokenStack &stack)
{
    if (stack.size() < 2)
        return 0;
    Token *program = stack.takeLastToken();
    Token *func = stack.takeLastToken();
    DATA_CAST(Program, program)->prependFunction(DATA_CAST(Function, func));
    delete func;
    return program;
}
Esempio n. 10
0
Token *Parser::reduceR18(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *real = stack.takeLastToken();
    Token *s = new Token(Token::Statement_Token);
    DATA_CAST(Statement, s)->setReal(DATA_CAST(Real, real)->value());
    delete real;
    return s;
}
Esempio n. 11
0
Token *Parser::reduceR17(TokenStack &stack)
{
    if (stack.size() < 1)
        return 0;
    Token *integer = stack.takeLastToken();
    Token *s = new Token(Token::Statement_Token);
    DATA_CAST(Statement, s)->setInteger(DATA_CAST(Integer, integer)->value());
    delete integer;
    return s;
}
Esempio n. 12
0
Token *Parser::reduceR20(TokenStack &stack)
{
    if (stack.size() < 2)
        return 0;
    Token *f = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *an = new Token(Token::ArgumentNo_Token);
    DATA_CAST(ArgumentNo, an)->setFunction(DATA_CAST(Function, f));
    delete f;
    return an;
}
Esempio n. 13
0
Token *Parser::reduceR19(TokenStack &stack)
{
    if (stack.size() < 2)
        return 0;
    Token *integer = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *an = new Token(Token::ArgumentNo_Token);
    DATA_CAST(ArgumentNo, an)->setInteger(DATA_CAST(Integer, integer)->value());
    delete integer;
    return an;
}
Esempio n. 14
0
Token *Parser::reduceR11(TokenStack &stack)
{
    if (stack.size() < 3)
        return 0;
    delete stack.takeLastToken();
    Token *p = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *arg = new Token(Token::OptArg_Token);
    DATA_CAST(Subprogram, arg)->copyStatements(DATA_CAST(Subprogram, p));
    delete p;
    return arg;
}
Esempio n. 15
0
Token *Parser::reduceR2(TokenStack &stack)
{
    if (stack.size() < 4)
        return 0;
    Token *optArgList = stack.takeLastToken();
    Token *obligArgList = stack.takeLastToken();
    Token *funcName = stack.takeLastToken();
    delete stack.takeLastToken();
    Token *func = new Token(Token::Function_Token);
    Function_TokenData *data = DATA_CAST(Function, func);
    data->setName(DATA_CAST(String, funcName)->value());
    delete funcName;
    data->setObligatoryArguments(DATA_CAST(ArgList, obligArgList));
    delete obligArgList;
    data->setOptionalArguments(DATA_CAST(ArgList, optArgList));
    delete optArgList;
    return func;
}
Esempio n. 16
0
bool PretexFunction::execute(ExecutionContext *context, Function_TokenData *f, QString *err)
{
    if (!isValid())
        return bRet(err, tr("Attempted to execute invalid function", "error"), false);
    int oblArgCount = obligatoryArgumentCount();
    if (f->obligatoryArgumentCount() != oblArgCount)
        return bRet(err, tr("Argument count mismatch:", "error") + " " + name(), false);
    int optArgCount = optionalArgumentCount();
    if (optArgCount >= 0 && f->optionalArgumentCount() > optArgCount)
        return bRet(err, tr("Argument count mismatch:", "error") + " " + name(), false);
    QList<PretexVariant> oblArgs;
    foreach (int i, bRangeD(0, f->obligatoryArgumentCount() - 1))
    {
        bool b = false;
        PretexVariant a = ExecutionModule::executeSubprogram(context, f->obligatoryArgument(i), "", &b, err);
        if (!b)
            return false;
        oblArgs << a;
    }
    QList<PretexVariant> optArgs;
    foreach (int i, bRangeD(0, f->optionalArgumentCount() - 1))
    {
        bool b = false;
        PretexVariant a = ExecutionModule::executeSubprogram(context, f->optionalArgument(i), "", &b, err);
        if (!b)
            return false;
        optArgs << a;
    }
    ExecutionContext s(oblArgs, optArgs, name(), context);
    bool b = false;
    PretexVariant v = ExecutionModule::executeSubprogram(&s, DATA_CAST(Subprogram, &mbody), f->name(), &b, err);
    if (!b)
        return false;
    context->setReturnValue(v);
    return bRet(err, QString(), true);
}
Esempio n. 17
0
void init_global_data(void)
{
	/* Vehicle information */
	set_global_data_value(VEHICLE_TYPE, UINT8, DATA_CAST((uint8_t)QUADCOPTER));

	/* Flight status */

	
	set_global_data_value(SAFTY_BUTTON, UINT8, DATA_CAST((uint8_t)QUADCOPTER));
	set_global_data_value(MODE_BUTTON, UINT8, DATA_CAST((uint8_t)QUADCOPTER));

	/* Attitude PID Gain */
	set_global_data_value(ROLL_KP, FLOAT, DATA_CAST((float)0.20f));
	set_global_data_value(ROLL_KI, FLOAT, DATA_CAST((float)0.045f));
	set_global_data_value(ROLL_KD, FLOAT, DATA_CAST((float)0.07f));

	set_global_data_value(PITCH_KP, FLOAT, DATA_CAST((float)0.20f));
	set_global_data_value(PITCH_KI, FLOAT, DATA_CAST((float)0.045));
	set_global_data_value(PITCH_KD, FLOAT, DATA_CAST((float)0.07f));

	set_global_data_value(YAW_KP, FLOAT, DATA_CAST((float)0.65));
	set_global_data_value(YAW_KI, FLOAT, DATA_CAST((float)0));
	set_global_data_value(YAW_KD, FLOAT, DATA_CAST((float)0));

	set_global_data_value(YAW_KP, FLOAT, DATA_CAST((float)0.65));
	set_global_data_value(YAW_KI, FLOAT, DATA_CAST((float)0));
	set_global_data_value(YAW_KD, FLOAT, DATA_CAST((float)0));

	set_global_data_value(HEADING_KP, FLOAT, DATA_CAST((float)2.5));
	set_global_data_value(HEADING_KI, FLOAT, DATA_CAST((float)0));
	set_global_data_value(HEADING_KD, FLOAT, DATA_CAST((float)0));

	set_global_data_value(ZD_KP, FLOAT, DATA_CAST((float)0.3));
	set_global_data_value(ZD_KI, FLOAT, DATA_CAST((float)0.03));
	set_global_data_value(ZD_KD, FLOAT, DATA_CAST((float)0));

	set_global_data_value(Z_KP, FLOAT, DATA_CAST((float)1.4));
	set_global_data_value(Z_KI, FLOAT, DATA_CAST((float)0));
	set_global_data_value(Z_KD, FLOAT, DATA_CAST((float)0));


	int i;
	for(i = 0; i < get_global_data_count(); i++) {
		bool parameter_config;

		get_global_data_parameter_config_status(i, &parameter_config);
		if(parameter_config == true)
			modifiable_data_cnt++;
	}
} 
Esempio n. 18
0
bool PretexFunction::isEmpty() const
{
    return !isValid() || !DATA_CAST(Subprogram, &mbody)->statementCount();
}