/* * ca_array_put_callback () */ int epicsShareAPI ca_array_put_callback ( chtype type, arrayElementCount count, chid pChan, const void *pValue, caEventCallBackFunc *pfunc, void *usrarg ) { int caStatus; try { if ( type < 0 ) { return ECA_BADTYPE; } if ( pfunc == NULL ) { return ECA_BADFUNCPTR; } epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () ); pChan->eliminateExcessiveSendBacklog ( guard ); unsigned tmpType = static_cast < unsigned > ( type ); autoPtrFreeList < putCallback, 0x400, epicsMutexNOOP > pNotify ( pChan->getClientCtx().putCallbackFreeList, new ( pChan->getClientCtx().putCallbackFreeList ) putCallback ( *pChan, pfunc, usrarg ) ); pChan->io.write ( guard, tmpType, count, pValue, *pNotify, 0 ); pNotify.release (); caStatus = ECA_NORMAL; } catch ( cacChannel::badString & ) { caStatus = ECA_BADSTR; } catch ( cacChannel::badType & ) { caStatus = ECA_BADTYPE; } catch ( cacChannel::outOfBounds & ) { caStatus = ECA_BADCOUNT; } catch ( cacChannel::noWriteAccess & ) { caStatus = ECA_NOWTACCESS; } catch ( cacChannel::notConnected & ) { caStatus = ECA_DISCONN; } catch ( cacChannel::unsupportedByService & ) { caStatus = ECA_UNAVAILINSERV; } catch ( cacChannel::requestTimedOut & ) { caStatus = ECA_TIMEOUT; } catch ( std::bad_alloc & ) { caStatus = ECA_ALLOCMEM; } catch ( ... ) { caStatus = ECA_PUTFAIL; } return caStatus; }
LRESULT CStatusControl::OnNotify(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { NMHDR *pNotify((LPNMHDR)lParam); switch(pNotify->code) { case UDN_DELTAPOS: UpdateSpeed(((LPNMUPDOWN) lParam)->iPos, ((LPNMUPDOWN) lParam)->iDelta); break; case EN_CHANGE: { TCHAR wszBuffer[32]; SendMessage(m_hEdit, WM_GETTEXT, 32, (long)wszBuffer); double dNewSpeed = _tstof(wszBuffer); m_pAppSettings->SetLongParameter(LP_MAX_BITRATE, dNewSpeed * 100); } break; default: bHandled = false; break; } return 0; }
/* * ca_array_get_callback () */ int epicsShareAPI ca_array_get_callback ( chtype type, arrayElementCount count, chid pChan, caEventCallBackFunc *pfunc, void *arg ) { int caStatus; try { if ( type < 0 ) { return ECA_BADTYPE; } unsigned tmpType = static_cast < unsigned > ( type ); epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () ); pChan->eliminateExcessiveSendBacklog ( guard ); autoPtrFreeList < getCallback, 0x400, epicsMutexNOOP > pNotify ( pChan->getClientCtx().getCallbackFreeList, new ( pChan->getClientCtx().getCallbackFreeList ) getCallback ( *pChan, pfunc, arg ) ); pChan->io.read ( guard, tmpType, count, *pNotify, 0 ); pNotify.release (); caStatus = ECA_NORMAL; } catch ( cacChannel::badString & ) { caStatus = ECA_BADSTR; } catch ( cacChannel::badType & ) { caStatus = ECA_BADTYPE; } catch ( cacChannel::outOfBounds & ) { caStatus = ECA_BADCOUNT; } catch ( cacChannel::noReadAccess & ) { caStatus = ECA_NORDACCESS; } catch ( cacChannel::notConnected & ) { caStatus = ECA_DISCONN; } catch ( cacChannel::unsupportedByService & ) { caStatus = ECA_UNAVAILINSERV; } catch ( cacChannel::requestTimedOut & ) { caStatus = ECA_TIMEOUT; } catch ( std::bad_alloc & ) { caStatus = ECA_ALLOCMEM; } catch ( cacChannel::msgBodyCacheTooSmall ) { caStatus = ECA_TOLARGE; } catch ( ... ) { caStatus = ECA_GETFAIL; } return caStatus; }