npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-linux-cec

v1.0.2

Published

Linux CEC bindings for Node.js

Downloads

19

Readme

node-linux-cec

Linux CEC bindings for Node.js

This package includes native bindings for the Linux Consumer Electronics Control API. All constants and functions from linux/cec.h and linux/cec-funcs.h are included, as well as a Device class for managing CEC adapters.

Requirements

  • Node >= 10.7 (requires napi bigint support)

API

The api is the same as found in the linux CEC headers, with the following changes:

  • All functions, variables, arguments and properties are in camel case.
  • All types/structs are in pascal case.
  • The CEC_ prefix has been removed from all constants.
  • The cec_ prefix has been removed from all functions.
  • The cec_msg_init implementation doesn't accept an existing message as its first argument.
  • All cec_msg_* functions return a new message object and do not alter the existing message.
  • All cec_ops_* functions with one output value return that value directly.
  • All cec_ops_* functions with more than one output value return an object with the output values as properties.
  • All number values that are inherently boolean flags are cast as boolean values.

Usage

import * as cec from 'node-linux-cec'

const main = async () => {
  const device = new cec.Device('/dev/cec0')

  device.on('event', event => {
    // handle CEC event
  })

  device.on('message', async msg => {
    // handle CEC message
    if (cec.msgIsBroadcast(msg)) return
    msg = cec.msgReplyFeatureAbort(msg, cec.OP_ABORT_UNRECOGNIZED_OP)
    // Transmit reply
    await device.transmit(msg)
  })

  // Open the device
  await device.open()

  // Change device mode
  await device.setMode(cec.MODE_INITIATOR | cec.MODE_FOLLOWER)

  // ...

  // Reset mode and close device
  await device.setMode(cec.MODE_INITIATOR)
  await device.close()
}

Development

Ensure clang-format and linux headers are installed. Run yarn gen <path-to-cec-headers> (/usr/include/linux on most systems) to update the generated bindings. Then build the module with yarn build.