#include<stdio.h>
#include<stdint.h>
#include<string.h>
#define AER_REQ_RESPONSE_READY 0
uint8_t currentZoom = 0;
void zoomToPercentage(uint8_t percentage) {
printf("Zoom to %d\n", percentage
); currentZoom = percentage;
}
int8_t max(int8_t a, int8_t b) {
if (a >= b) {
return a;
}
return b;
}
int8_t min(int8_t a, int8_t b) {
if (a < b) {
return a;
}
return b;
}
int nextZoom(int8_t plusZoomPercentage) {
//if (!unabto_query_read_int8(readBuffer, &plusZoomPercentage))
//{
// return AER_REQ_TOO_SMALL;
//}
if (plusZoomPercentage != 0)
{
uint8_t currentZoomPercentage = currentZoom;
plusZoomPercentage = max(plusZoomPercentage, -currentZoomPercentage);
plusZoomPercentage = min(plusZoomPercentage, 100 - currentZoomPercentage);
zoomToPercentage(currentZoomPercentage + plusZoomPercentage);
}
return AER_REQ_RESPONSE_READY;
}
int main()
{
nextZoom(50);
nextZoom(50);
nextZoom(50);
nextZoom(-120);
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkaW50Lmg+CiNpbmNsdWRlPHN0cmluZy5oPgoKI2RlZmluZSBBRVJfUkVRX1JFU1BPTlNFX1JFQURZIDAKCnVpbnQ4X3QgY3VycmVudFpvb20gPSAwOwoKdm9pZCB6b29tVG9QZXJjZW50YWdlKHVpbnQ4X3QgcGVyY2VudGFnZSkgewogICAgcHJpbnRmKCJab29tIHRvICVkXG4iLCBwZXJjZW50YWdlKTsKICAgIGN1cnJlbnRab29tID0gcGVyY2VudGFnZTsKfQoKaW50OF90IG1heChpbnQ4X3QgYSwgaW50OF90IGIpIHsKICAgIGlmIChhID49IGIpIHsKICAgICAgICByZXR1cm4gYTsKICAgIH0KICAgIHJldHVybiBiOwp9CmludDhfdCBtaW4oaW50OF90IGEsIGludDhfdCBiKSB7CiAgICBpZiAoYSA8IGIpIHsKICAgICAgICByZXR1cm4gYTsKICAgIH0KICAgIHJldHVybiBiOwp9CgppbnQgbmV4dFpvb20oaW50OF90IHBsdXNab29tUGVyY2VudGFnZSkgewogICAgLy9pZiAoIXVuYWJ0b19xdWVyeV9yZWFkX2ludDgocmVhZEJ1ZmZlciwgJnBsdXNab29tUGVyY2VudGFnZSkpCiAgICAvL3sKICAgIC8vICAgICAgICByZXR1cm4gQUVSX1JFUV9UT09fU01BTEw7CiAgICAvL30KICAgIGlmIChwbHVzWm9vbVBlcmNlbnRhZ2UgIT0gMCkKICAgIHsKICAgICAgICB1aW50OF90IGN1cnJlbnRab29tUGVyY2VudGFnZSA9IGN1cnJlbnRab29tOwogICAgICAgIHBsdXNab29tUGVyY2VudGFnZSA9IG1heChwbHVzWm9vbVBlcmNlbnRhZ2UsIC1jdXJyZW50Wm9vbVBlcmNlbnRhZ2UpOwogICAgICAgIHBsdXNab29tUGVyY2VudGFnZSA9IG1pbihwbHVzWm9vbVBlcmNlbnRhZ2UsIDEwMCAtIGN1cnJlbnRab29tUGVyY2VudGFnZSk7CiAgICAgICAgem9vbVRvUGVyY2VudGFnZShjdXJyZW50Wm9vbVBlcmNlbnRhZ2UgKyBwbHVzWm9vbVBlcmNlbnRhZ2UpOwogICAgfQogICAgcmV0dXJuIEFFUl9SRVFfUkVTUE9OU0VfUkVBRFk7Cn0KCgppbnQgbWFpbigpCnsKICAgIG5leHRab29tKDUwKTsKICAgIG5leHRab29tKDUwKTsKICAgIG5leHRab29tKDUwKTsKICAgIG5leHRab29tKC0xMjApOwp9Cg==