====== Access Control API ======
API for access control, which can manage access authority by individual, group, time schedules. \\
* [[BS2_GetAccessGroup]]: Retrieves selected access groups.
* [[BS2_GetAllAccessGroup]]: Retrieves all access groups.
* [[BS2_SetAccessGroup]]: Configures an access group.
* [[BS2_RemoveAccessGroup]]: Removes selected access groups.
* [[BS2_RemoveAllAccessGroup]]: Removes all access groups.
* [[BS2_GetAccessLevel]]: Retrieves selected access levels.
* [[BS2_GetAllAccessLevel]]: Retrieves all access levels.
* [[BS2_SetAccessLevel]]: Configures an access level.
* [[BS2_RemoveAccessLevel]]: Removes selected access levels.
* [[BS2_RemoveAllAccessLevel]]: Removes all access levels.
* [[BS2_GetAccessSchedule]]: Retrieves selected time schedules.
* [[BS2_GetAllAccessSchedule]]: Retrieves all time schedules.
* [[BS2_SetAccessSchedule]]: Configures a time schedule.
* [[BS2_RemoveAccessSchedule]]: Removes selected time schedules.
* [[BS2_RemoveAllAccessSchedule]]: Removes all time schedules.
* [[BS2_GetHolidayGroup]]: Retrieves selected holiday groups.
* [[BS2_GetAllHolidayGroup]]: Retrieves all holiday groups.
* [[BS2_SetHolidayGroup]]: Configures a holiday group.
* [[BS2_RemoveHolidayGroup]]: Removes selected holiday groups.
* [[BS2_RemoveAllHolidayGroup]]: Removes all holiday groups.
===== Structure ======
==== BS2AccessGroup ====
typedef struct {
uint32_t id;
char name[BS2_MAX_ACCESS_GROUP_NAME_LEN];
uint8_t numAccessLevels;
uint8_t reserved[3];
uint32_t accessLevels[BS2_MAX_ACCESS_LEVEL_PER_ACCESS_GROUP];
} BS2AccessGroup;
1. //id// \\
Access group ID. \\ \\
2. //name// \\
Name of the access group that will be displayed on the BioStar application. \\ \\
3. //numAccessLevels// \\
Number of access levels that belongs to an access group. \\ \\
4. //reserved// \\
Reserved space. \\ \\
5. //accessLevels// \\
List of access levels that belongs to an access group. \\
==== BS2DoorSchedule ====
typedef struct {
uint32_t doorID;
uint32_t scheduleID;
} BS2DoorSchedule ;
1. //doorID// \\
Door ID. \\ \\
2. //scheduleID// \\
Schedule ID. \\
==== BS2AccessLevel ====
typedef struct {
uint32_t id;
char name[BS2_MAX_ACCESS_GROUP_NAME_LEN];
uint8_t numDoorSchedules;
uint8_t reserved[3];
BS2DoorSchedule doorSchedules[BS2_MAX_ACCESS_LEVEL_PER_ACCESS_GROUP];
} BS2AccessLevel;
1. //id// \\
Access level ID. The ID should be a number less than 32768(0x7FFF).\\ This is due to a limitation where this ID needs to be shared with floor levels for lift control.\\ \\
2. //name// \\
Name of the access level that will be displayed on the BioStar application. \\ \\
3. //numDoorSchedules// \\
Number of schedules allocated to a door that belongs to an access level. \\ \\
4. //reserved// \\
Reserved space. \\ \\
5. //doorSchedules// \\
List of schedules allocated to a door that belongs to an access level. \\
==== BS2TimePeriod ====
typedef struct {
int16_t startTime;
int16_t endTime;
} BS2TimePeriod;
1. //startTime// \\
Starting time of the time period. The unit of the value is minutes.\\ \\
2. //endTime// \\
Ending time of the time period. The unit of the value is minutes.\\
==== BS2DaySchedule ====
typedef struct {
uint8_t numPeriods;
uint8_t reserved[3];
BS2TimePeriod periods[BS2_MAX_TIME_PERIODS_PER_DAY];
} BS2DaySchedule;
1. //numPeriods// \\
Number of time periods. \\ \\
2. //reserved// \\
Reserved space. \\ \\
3. //periods// \\
List of time periods, which can be configured up to 5 time periods.\\
==== BS2WeeklySchedule ====
typedef struct {
BS2DaySchedule schedule[BS2_NUM_WEEKDAYS];
} BS2WeeklySchedule;
1. //schedule// \\
Weekly schedule that has total 7 daily schedules.\\
==== BS2DailySchedule ====
typedef struct {
uint32_t startDate;
uint8_t numDays;
uint8_t reserved[3];
BS2DaySchedule schedule[BS2_MAX_DAYS_PER_DAILY_SCHEDULE];
} BS2DailySchedule;
1. //startDate// \\
Starting date of the schedule.\\ \\
2. //numDays// \\
Number of the daily schedule.\\ \\
3. //reserved// \\
Reserved space.\\ \\
4. //schedule// \\
List of daily schedules starting from the startDate.\\
==== BS2HolidaySchedule ====
typedef struct {
uint32_t id;
BS2DaySchedule schedule;
} BS2HolidaySchedule;
1. //startDate// \\
Holiday schedule ID.\\ \\
2. //schedule// \\
Holiday daily schedule.\\
==== BS2Schedule ====
typedef struct
{
uint32_t id;
char name[BS2_MAX_SCHEDULE_NAME_LEN];
uint8_t isDaily;
uint8_t numHolidaySchedules;
uint8_t reserved[2];
union
{
BS2WeeklySchedule weekly;
BS2DailySchedule daily;
}schedule;
BS2HolidaySchedule holidaySchedules[BS2_MAX_HOLIDAY_GROUPS_PER_SCHEDULE];
}BS2Schedule;
1. //id// \\
Schedule ID. \\ \\
**CAUTION**\\
You should avoid using 0 and 1 as the schedule ID. \\
Schedule ID 0 is recognized as 'Not used' and Schedule ID 1 is recognized as 'Always' for every device.
2. //name// \\
Name of the schedule that will be displayed on the BioStar application.\\ \\
3. //isDaily// \\
Decides whether it's a daily schedule or a weekly schedule.\\ \\
4. //numHolidaySchedules// \\
Number of holiday schedules.\\ \\
5. //reserved// \\
Reserved space.\\ \\
6. //weekly// \\
Weekly schedule. This will be valid only when isDaily is set to 0.\\ \\
7. //daily// \\
Daily schedule. This will be valid when isDaily has a value rather than 0.\\ \\
8. //holidaySchedules// \\
List of holiday schedules.\\
==== BS2Holiday ====
typedef struct {
uint32_t date;
uint8_t recurrence;
} BS2Holiday;
1. //date// \\
Date of the holiday. \\ \\
2. //recurrence// \\
The value of repetition. \\
^Value ^Description ^
|0 |Does not repeat |
|1 |Repeat yearly |
|2 |Repeat monthly |
|3 |Repeat weekly |
==== BS2HolidayGroup ====
typedef struct
{
uint32_t id;
char name[BS2_MAX_SCHEDULE_NAME_LEN];
uint8_t numHolidays;
uint8_t reserved[3];
BS2Holiday holidays[BS2_MAX_HOLIDAYS_PER_GROUP];
}BS2HolidayGroup;
1. //id// \\
Holiday group ID. \\ \\
2. //name// \\
Name of the holiday group that will be displayed on the BioStar application.\\ \\
3. //numHolidays// \\
Number of holidays.\\ \\
4. //reserved// \\
Reserved space.\\ \\
5. //holidays// \\
List of holidays.\\