#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;
}
int nextZoom(int8_t plusZoomPercentage) {
//if (!unabto_query_read_int8(readBuffer, &plusZoomPercentage))
//{
// return AER_REQ_TOO_SMALL;
//}
if (plusZoomPercentage != 0)
{
uint8_t currentZoomPercentage = currentZoom;
if (plusZoomPercentage < - currentZoomPercentage) {
plusZoomPercentage = - currentZoomPercentage;
}
if (plusZoomPercentage > 100 - currentZoomPercentage) {
plusZoomPercentage = 100 - currentZoomPercentage;
}
zoomToPercentage(currentZoomPercentage + plusZoomPercentage);
}
return AER_REQ_RESPONSE_READY;
}
int main()
{
nextZoom(50);
nextZoom(50);
nextZoom(50);
nextZoom(-120);
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkaW50Lmg+CiNpbmNsdWRlPHN0cmluZy5oPgoKI2RlZmluZSBBRVJfUkVRX1JFU1BPTlNFX1JFQURZIDAKCnVpbnQ4X3QgY3VycmVudFpvb20gPSAwOwoKdm9pZCB6b29tVG9QZXJjZW50YWdlKHVpbnQ4X3QgcGVyY2VudGFnZSkgewogICAgcHJpbnRmKCJab29tIHRvICVkXG4iLCBwZXJjZW50YWdlKTsKICAgIGN1cnJlbnRab29tID0gcGVyY2VudGFnZTsKfQoKaW50IG5leHRab29tKGludDhfdCBwbHVzWm9vbVBlcmNlbnRhZ2UpIHsKICAgIC8vaWYgKCF1bmFidG9fcXVlcnlfcmVhZF9pbnQ4KHJlYWRCdWZmZXIsICZwbHVzWm9vbVBlcmNlbnRhZ2UpKQogICAgLy97CiAgICAvLyAgICAgICAgcmV0dXJuIEFFUl9SRVFfVE9PX1NNQUxMOwogICAgLy99CiAgICBpZiAocGx1c1pvb21QZXJjZW50YWdlICE9IDApCiAgICB7CiAgICAgICAgdWludDhfdCBjdXJyZW50Wm9vbVBlcmNlbnRhZ2UgPSBjdXJyZW50Wm9vbTsKICAgICAgICBpZiAocGx1c1pvb21QZXJjZW50YWdlIDwgLSBjdXJyZW50Wm9vbVBlcmNlbnRhZ2UpIHsKICAgICAgICAJcGx1c1pvb21QZXJjZW50YWdlID0gLSBjdXJyZW50Wm9vbVBlcmNlbnRhZ2U7CiAgICAgICAgfQogICAgICAgIGlmIChwbHVzWm9vbVBlcmNlbnRhZ2UgPiAxMDAgLSBjdXJyZW50Wm9vbVBlcmNlbnRhZ2UpIHsKICAgICAgICAJcGx1c1pvb21QZXJjZW50YWdlID0gMTAwIC0gY3VycmVudFpvb21QZXJjZW50YWdlOwogICAgICAgIH0KICAgICAgICB6b29tVG9QZXJjZW50YWdlKGN1cnJlbnRab29tUGVyY2VudGFnZSArIHBsdXNab29tUGVyY2VudGFnZSk7CiAgICB9CiAgICByZXR1cm4gQUVSX1JFUV9SRVNQT05TRV9SRUFEWTsKfQoKCmludCBtYWluKCkKewogICAgbmV4dFpvb20oNTApOwogICAgbmV4dFpvb20oNTApOwogICAgbmV4dFpvb20oNTApOwogICAgbmV4dFpvb20oLTEyMCk7Cn0K