| 328 | } |
| 329 | |
| 330 | void xs_destm32s(xsMachine *the) |
| 331 | { |
| 332 | spiDisplay sd; |
| 333 | uint8_t clear = MODDEF_DESTM32S_CLEAR && !MODDEF_DESTM32S_FULL; |
| 334 | |
| 335 | #if EPAPER == kePaperBlackWhite |
| 336 | if (kCommodettoBitmapGray256 != kCommodettoBitmapFormat) |
| 337 | xsUnknownError("bad format"); |
| 338 | #elif (EPAPER == kePaperBlackWhiteGrayRed || EPAPER == kePaperBlackWhiteRed) |
| 339 | if (kCommodettoBitmapRGB332 != kCommodettoBitmapFormat) |
| 340 | xsUnknownError("bad format"); |
| 341 | #else |
| 342 | xsUnknownError("bad format"); |
| 343 | #endif |
| 344 | |
| 345 | sd = c_calloc(1, sizeof(spiDisplayRecord)); |
| 346 | if (!sd) |
| 347 | xsUnknownError("no memory"); |
| 348 | |
| 349 | xsmcSetHostData(xsThis, sd); |
| 350 | |
| 351 | #if EPAPER == kePaperBlackWhite |
| 352 | sd->dispatch = (PixelsOutDispatch)&gPixelsOutDispatch_cfap122250a00213; |
| 353 | #elif EPAPER == kePaperBlackWhiteGrayRed |
| 354 | sd->dispatch = (PixelsOutDispatch)&gPixelsOutDispatch_cfap104212B00213; |
| 355 | #elif EPAPER == kePaperBlackWhiteRed |
| 356 | sd->dispatch = (PixelsOutDispatch)&gPixelsOutDispatch_cfap128296D00290; |
| 357 | #else |
| 358 | xsUnknownError("unknown display"); |
| 359 | #endif |
| 360 | |
| 361 | if (xsmcHas(xsArg(0), xsID_powerOff)) { |
| 362 | xsmcVars(1); |
| 363 | xsmcGet(xsVar(0), xsArg(0), xsID_powerOff); |
| 364 | sd->doPowerOff = xsmcTest(xsVar(0)); |
| 365 | } |
| 366 | |
| 367 | SCREEN_CS_INIT; |
| 368 | SCREEN_DC_INIT; |
| 369 | |
| 370 | modGPIOInit(&sd->busy, MODDEF_DESTM32S_BUSY_PORT, MODDEF_DESTM32S_BUSY_PIN, kModGPIOInput); |
| 371 | |
| 372 | #ifdef MODDEF_DESTM32S_RST_PIN |
| 373 | modGPIOInit(&sd->rst, MODDEF_DESTM32S_RST_PORT, MODDEF_DESTM32S_RST_PIN, kModGPIOOutput); |
| 374 | modGPIOWrite(&sd->rst, 1); |
| 375 | modDelayMilliseconds(100); |
| 376 | |
| 377 | modGPIOWrite(&sd->rst, 0); |
| 378 | modDelayMilliseconds(100); |
| 379 | modGPIOWrite(&sd->rst, 1); |
| 380 | modDelayMilliseconds(1000); |
| 381 | #endif |
| 382 | |
| 383 | modSPIConfig(sd->spiConfig, MODDEF_DESTM32S_HZ, MODDEF_DESTM32S_SPI_PORT, |
| 384 | MODDEF_DESTM32S_CS_PORT, MODDEF_DESTM32S_CS_PIN, destm32sChipSelect); |
| 385 | modSPIInit(&sd->spiConfig); |
| 386 | |
| 387 | #if EPAPER == kePaperBlackWhite |
nothing calls this directly
no test coverage detected