~~NOTOC~~
====== OSA : Error list ======
==== #1 : Unknown compiler! ====
OSA can only be built with the following compilers:
* HI-TECH PICC STD
* HI-TECH PICC PRO
* HI-TECH PICC18 STD
* Microchip C18
* Microchip C30
* CCS PICC
* microC PRO for PIC
* WinAVR
* IAR
Other compilers are not yet supported.
----
==== #2 : Constants OS_xxx_BANK are not allowed now (use OS_BANK_xxx instead) ====
This means that you defined old-style constants for allocating OSA variables in file ##[[en:osa:ref:appendix:configuration|OSAcfg.h.]]## New-style names are prefixed by "##[[en:osa:ref:appendix:configuration|OS_BANK_]]##". See [[en:osa:ref:appendix:configuration#Data allocation for PIC10, PIC12, PIC16 and PIC18|configuration]].
----
==== #3 .. #12 : Incorrect OS_BANK_xxx value (should be 0, 1, 2 or 3) ====
You define one or more ##[[en:osa:ref:appendix:configuration|OS_BANK_xxx]]## constants in ##[[en:osa:ref:appendix:configuration|OSAcfg.h]]## with incorrect value(s). Allowed values are 0, 1, 2 and 3 only.
----
==== #13 : OST_TIMER is not supported! Use OS_TIMER_SIZE instead ====
This means that you defined an old-style constant. ##[[en:osa:ref:description:data_types#OST_TIMER|OST_TIMER]]## is no longer supported. In older OSA versions this constant could be used to redefine type of timers, where type was given directly (e.g. **char**, **unsigned long**). Now you can redefine the timer's type by setting its size. For example:
#define OS_TIMER_SIZE 4 // Timer's type will be unsigned long
----
==== #14 .. #15 : Can't redefine name OST_xxx in 'OSAcfg.h'. Use OS_xxx_TYPE instead. ====
Since OSA version 90200, types of ##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## and ##[[en:osa:ref:description:data_types#OST_SMSG|OST_SMSG]]## can be redefined only via the new constants ##[[en:osa:ref:appendix:configuration|OS_MSG_TYPE]]## and ##[[en:osa:ref:appendix:configuration|OS_SMSG_TYPE.]]## The reason is below:
##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## was defined as:
#define OST_MSG void *
When you define several variables of this type:
OST_MSG msg1, msg2, msg3;
the compiler makes the substitution:
void * msg1, msg2, msg3;
As you see, only **msg1** will be pointer to void, while **msg2** and **msg3** will be just void.
This situation could be corrected by replacing the type definition by:
typedef void * OST_MSG;
But in this case the user can't redefine this type. For this reason, the type of MSG is not redefined in ##[[en:osa:ref:appendix:configuration|OSAcfg.h]]## directly, but through a constant:
#define OS_MSG_TYPE int *
and then ##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## is defined in osa.h:
typedef OS_MSG_TYPE OST_MSG;
----
==== #16 : Incorrect OS_CSEM_SIZE value (m.b. only 1, 2 or 4)! (see OSAcfg.h) ====
You entered an incorrect size for variables of counting semaphore type. Allowed values:
* 1 - for unsigned char
* 2 - for unsigned int
* 4 - for unsigned long
----
==== #17 .. #21 : Bad OS_xxx size (must be 1, 2 or 4) ====
You entered an incorrect size for timer variables. Allowed values:
* 1 - for unsigned char
* 2 - for unsigned int
* 4 - for unsigned long
----
==== #22: Qtimers are not supported under 12-bit controllers (PIC10 and PIC12) ====
Qtimers are not supported for 12-bit controllers. In practice, there is no need to use them on 12-bit PICs, since they are only beneficial when using a large number of timers.
----
~~UP~~