[Icc-avr] Function Pointer with arguments?

Sylvain Bissonnette sbissonnette at microsyl.com
Thu May 31 18:57:39 PDT 2007


Hi,

I have some code that use function pointer with no argument, but I need to 
pass one argument.

Now it's look like
TaskRegister(&KeyScan,T100MS);

but now I want something like
TaskRegister(&KeyScan(int x),T100MS);

Here is my code with no argument I want to modify

Any help will be welcome
Thanks

//********************************
// G L O B A L V A R I A B L E
//********************************
typedef struct Task
{
void (*FunctionPTR)(void);
uint Interval;
uint Ticker;
}Task;
Task TaskList[MAX_TASK];
int TaskMax = 0;

//------------------------------------ 

int TaskRegister(void(*FunctionPTR)(void),
uint Interval)
{
TaskList[TaskMax].FunctionPTR = FunctionPTR;
TaskList[TaskMax].Interval = Interval;
TaskList[TaskMax].Ticker = 0;
TaskMax++;
}

//---------------------------------------- 

#pragma interrupt_handler TaskExecute:12
void TaskExecute(void)
{
static ushort i,j;
static void (*FunctionPTR)(void);

TCNT0 = 255 - (XTAL / 8 / 10000);

for (i=0;i<TaskMax;i++)
{
if (TaskList[i].Ticker++ >= TaskList[i].Interval)
{
FunctionPTR = TaskList[i].FunctionPTR;
TaskList[i].Ticker = 0;
FunctionPTR();
}
}
} 



More information about the Icc-avr mailing list